如果验证失败,焦点应该保持不变

时间:2014-02-22 11:18:48

标签: javascript

在下面的代码中我有2个文本框。当我输入一个值时,验证是否成功它将移动到下一个文本框,如果它失败,它将发出警报而不是移动到另一个文本框。我的目标是它是否失败焦点应保留在同一文本框中。

function ValidateRegExp(txtInput, REGEXP) {
        var mySplitResult = new Array();
        mySplitResult = REGEXP.split("~~");

        var iReturn = 0;
        for (i = 0; i < mySplitResult.length - 1; i++) {

            var re = new RegExp(mySplitResult[i]);
            if (!txtInput.match(re)) {
                iReturn = iReturn + 1;
            }
        }

        if (iReturn > 0) {
            alert("Failed...");//focus should remain on same textbox
        }
        else {
            alert("Success...");

        }

    }

3 个答案:

答案 0 :(得分:0)

document.getElementById('textInput').focus();会做...

如果您在案例中传递textInput的引用,请尝试textInput.focus();

您只将值传递给ValidateRegExp函数,而是传递元素的引用。将您的事件绑定更改为以下内容,

txtField.Attributes.Add("onblur", "javascript:ValidateRegExp(document.getElementById('" + txtField.ClientID + "'), '" + hidRegExp.Value + "');");

将您的js代码更改为

function ValidateRegExp(txtInput, REGEXP) {
        var textValue = txtInput.value;
        var mySplitResult = new Array();
        mySplitResult = REGEXP.split("~~");

        var iReturn = 0;
        for (i = 0; i < mySplitResult.length - 1; i++) {

            var re = new RegExp(mySplitResult[i]);
            if (!textValue.match(re)) {
                iReturn = iReturn + 1;
            }
        }

        if (iReturn > 0) {
            //alert("Failed...");//focus should remain on same textbox
            textInput.focus();
        }
        else {
            alert("Success...");

        }

    }

答案 1 :(得分:0)

使用foucs()方法执行此操作

  if (iReturn > 0) {
            alert("Failed...");//focus should remain on same textbox
            txtInput.focus();
        }

答案 2 :(得分:0)

您需要在focus();参考号上使用textInput

JavaScript:

function ValidateRegExp(txtInput, REGEXP) {
  var mySplitResult = [];
  mySplitResult = REGEXP.split("~~");

  var iReturn = 0;
  for (var i = 0; i < mySplitResult.length; i++) {
    var re = new RegExp(mySplitResult[i]);
    if (!txtInput.value.match(re)) {
      iReturn = iReturn + 1;
    }
  }

  if (iReturn > 0) {
    alert("Failed...");//focus should remain on same textbox
    txtInput.focus();
  }
  else {
    alert("Success...");
  }

}

在这种情况下,您将使用以下参数调用ValidateRegExp:NodeElement - 通常使用document.getElementById(...)和正则表达式String获取。

在你的情况下:

txtField.Attributes.Add("onblur", "javascript:ValidateRegExp(document.getElementById('" + txtField.ClientID + "'), '" + hidRegExp.Value + "');");

在此演示http://jsbin.com/xomoq/1/edit