在下面的代码中我有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...");
}
}
答案 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
。
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 + "');");