2015-04-02 70 views
0

我已经写了相同的JavaScript两次,两个文本框,但它同时运行一个文本框脚本我需要编写一次,调用相同的多个文本框JavaScript验证的onblur

function checkalphabets() { 
    var pattern = /^[a-zA-Z\s]+$/; 
    if (!pattern.test(myTextBox.value)) { 
     modal({ 
      type: 'warning', 
      title: 'Warning', 
      text: 'Only Alphabets allowed!', 
      center: false, 
      callback: function(){ $("#myTextBox").focus();} 
     }); 

     exit; 
     return false; 
    } 
    return true; 

} 
function checkalphabets1() { 
    var pattern = /^[a-zA-Z\s]+$/; 
    if (!pattern.test(TextBox1.value)) { 
     modal({ 
      type: 'warning', 
      title: 'Warning', 
      text: 'Only Alphabets allowed!', 
      center: false, 
      callback: function(){ $("#TextBox1").focus();} 
     }); 

     exit; 
     return false; 
    } 
    return true; 

} 
$('.modal-btn').click(function() { 

     $('#modal-window').hide(); 

    }); 

这里是fiddle

+0

您应该在尝试提取它们的值之前定义myTextBox和TestBox1。 – 2015-04-02 07:39:32

回答

0

您可以将元素进行检查作为函数的参数:

function checkalphabets($el) { 
    var pattern = /^[a-zA-Z\s]+$/; 
    if (!pattern.test($el.val())) { 
     modal({ 
      type: 'warning', 
      title: 'Warning', 
      text: 'Only Alphabets allowed!', 
      center: false, 
      callback: function(){ $el.focus();} 
     }); 

     return false; 
    } 
    return true; 
} 

调用,检查上的Elemen完成时传递的元素吨。

checkalphabets($("#TextBox1")); 
+0

它不工作,请检查我的小提琴http://jsfiddle.net/7kpsv1p4/46/ – 2015-04-02 09:41:27

+0

你有你的小提琴语法错误。你需要在你的内联'onblur'代码中使用单引号''' – atmd 2015-04-02 09:44:26

+0

请检查同时验证的两个文本框http://jsfiddle.net/7kpsv1p4/52/ – 2015-04-02 10:04:41

0

在您的代码中textbox1和mytextbox是未定义的。通过要素的功能,使他们定义:

function checkalphabets(myinput) { 
    var pattern = /^[a-zA-Z\s]+$/; 
    if (!pattern.test(myinput.value)) { 
     modal({ 
      type: 'warning', 
      title: 'Warning', 
      text: 'Only Alphabets allowed!', 
      center: false, 
      callback: function(){ $(myinput).focus();} 
     }); 

     exit; 
     return false; 
    } 
    return true; 
} 

$('.modal-btn').click(function() { 

     $('#modal-window').hide(); 

    }); 

也是我建议的的onkeyup代替的onblur进行检查每个字符后:

<input name="myTextBox" type="text" id="myTextBox" onkeyup="checkalphabets(this)" /> 
<input name="TextBox1" type="text" id="TextBox1" onkeyup="checkalphabets(this)" /> 

ASLO这将是很好的主意减去警告后不允许的字符。

0

你能想到将这个值作为输入传递给Javascript中的函数吗?&从下面的解释中提取这个变量的值?

HTML:

<form method="post" action="test.aspx" id="form1"> 
<div class="aspNetHidden"> 
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUJODIwMTY2MjU3ZGQVs14nJwqB/iIms8CsXW3SCzs22w==" /> 
</div> 

<div class="aspNetHidden"> 

    <input type="hidden" name="__VIEWSTATEGENERATOR" id="__VIEWSTATEGENERATOR" value="75BBA7D6" /> 
</div> 
    <div> 
     <input name="myTextBox" type="text" id="myTextBox" onblur="checkalphabets(this)" /> 
     <input name="TextBox1" type="text" id="TextBox1" onblur="checkalphabets(this)" /> 
    </div> 
    </form> 

的Javascript:

function checkalphabets(thisValue) { 
    var pattern = /^[a-zA-Z\s]+$/; 
    if (!pattern.test(thisValue.value)) { 
     modal({ 
      type: 'warning', 
      title: 'Warning', 
      text: 'Only Alphabets allowed t1 & t2!', 
      center: false, 
      callback: function(){ $(thisValue).focus();} 
     }); 

     exit; 
     return false; 
    } 
    return true; 
} 
$('.modal-btn').click(function() { 
     $('#modal-window').hide(); 
    }); 

喜欢聪明人,你可以使用任意数量的文本框的同样的方法!

+0

没有它的不工作两个文本框都是相同的验证时间 – 2015-04-02 09:13:46

+0

我在JSfiddle中运行相同的代码,我能够看到该方法在该特定文本框的模糊处仅被触发一次。但是,如果我们从一个文本框1移动到另一个文本框2 ..将引发textbox1的onblur事件,这将显示一个模式...在模型警报中点击“确定”,将调用textbox2的模糊事件...是你正在谈论的问题是什么? – 2015-04-02 09:21:44

+0

哪里有提及的asp.net从哪里来? – atmd 2015-04-02 09:45:15