2010-09-09 56 views
0

我有两个文本字段为必填项,其余字段为正常。现在我必须检测输入密钥并提交表单。我已经这样做了,但问题是,当发生错误(例如:字段为空),那么我必须停止提交表单,但仍然是表单提交。输入密钥检测+空值然后不应提交表格

<input autocomplete="off" type="text" id="first_name" size="10" 
onkeypress="if(event.keyCode == 13){ 
document.getElementById('btn_search').click(); 
return false;}"> 

这里btn_search是搜索按钮的ID,我必须执行它。但是当字段为空时,表单不应该被提交。给我一些建议?

即使我在JavaScript文件中创建单独的函数,我也得到了相同的响应。 其实我最近48小时面临这个问题。

回答

1

最后,我解决了这个问题。在这里,解释 我错过的东西,是返回值。这里“btn_search”是按钮的id,通过它调用一个单独的函数。我在其中提出了验证。 现在整个代码粘贴在这里。请看一看。

<input autocomplete="off" type="text" id="first_name" 
onkeypress="return enterKeyPress(event);" /> 

JavaScript函数

//Enter-listener 
function enterKeyPress(e) 
{ 
    if (e.keyCode == 13) { 
     document.getElementById('btn_search').click(); 
     return false; 
     } 
    } 

非常感谢您的建议。

+0

Rahul:请考虑使用Darin推荐的表单的onsubmit函数。这是进行表单验证的标准方式。它涵盖了在该字段中按下的“输入”,并且按钮被点击而没有任何您在此显示的代码是必要的。 – 2010-09-09 12:19:11

+0

@Skip Head:我不是说达林兄弟是错的,但根据我的要求,我必须这样做。否则达林的建议对我来说修改我的更多代码是非常有帮助的。谢谢亲爱的 – Rubyist 2010-09-09 12:25:02

0
document.getElementById('btn_search').click(function() 
{ 
if($('#first_name').val() == "") { 
// submit form here 
} 
}); 

这将检查“first_name”的值是否为空。它不会为空,因为它是一个文本框。或者你想在提交表单之前检查文本框的存在吗?

3

我会建议你在表单的onsubmit动作进行确认,而不是在输入操作按键:

<form action="/foo" onsubmit="return validate();"> 
    <input autocomplete="off" type="text" id="first_name" size="10" /> 
    <input type="submit" value="Search" /> 
</form> 

而在你validate功能:

function validate() { 
    var firstName = document.getElementById('first_name').value; 
    var isFormValid = (firstName != ''); 

    return isFormValid; 
} 
+0

实际上,当用户按ENTER键时,表单应该被提交。在运行验证之前应检查它是否为空。 – Rubyist 2010-09-09 10:47:13

+3

@Rahul,这正是我的代码所说明的。 – 2010-09-09 10:58:10

0

你可以这也是:)

<input autocomplete="off" type="text" id="first_name" size="10" onkeypress="if(this.value.replace(/^\s+|\s+$/g,'') != '' && event.keyCode == 13){ document.getElementById('btn_search').click(); return false;}"> 
0

只需将它添加到onsubmit活动形式

<form action="http://google.com" onsubmit="return (document.getElementById('first_name').value != '')"> 
    <input autocomplete="off" type="text" id="first_name" size="10" /> 
</form>​ 

return (document.getElementById('first_name').value != '')只是返回一个布尔值状态input元素,如果它的空布尔是假那里的的onsubmit会失败,从而导致用户首先进入的一些细节。

+0

朋友,按照用户按Enter键的要求,我必须调用提交表单的函数。所以应该使用按键来检测密钥,然后该功能将把呼叫转移到提交事件。 – Rubyist 2010-09-09 12:15:25

+0

好吧,如果你按任何输入元素来初始化提交事件,并且当它被解雇时,提交被解雇,所以这没有什么不同。 – RobertPitt 2010-09-09 13:54:32