使用jQuery,我们真的可以捕捉到提交按钮';s事件通过“或”;点击";或;提交;?
在jQuery中,对于表单提交按钮或图像,我们似乎可以使用使用jQuery,我们真的可以捕捉到提交按钮';s事件通过“或”;点击";或;提交;?,jquery,Jquery,在jQuery中,对于表单提交按钮或图像,我们似乎可以使用 $('#search-box-submit').click(function() { if ($('#search-box-submit').val().match(/^\s*$/)) { alert("Please enter search keywords"); return false; // stop the search request } }); 或
$('#search-box-submit').click(function() {
if ($('#search-box-submit').val().match(/^\s*$/)) {
alert("Please enter search keywords");
return false; // stop the search request
}
});
或者我们可以使用提交:
$('#search-box-submit').submit(function() {
if ($('#search-box-submit').val().match(/^\s*$/)) {
alert("Please enter search keywords");
return false; // stop the search request
}
});
更新:实际上,点击
可以防止使用空关键字进行搜索,但是提交
并不能阻止。为什么呢
更新2:我很惊讶,在Firefox或Chrome中,定义点击处理程序实际上可以在不输入任何内容的情况下按Enter键。因此,看起来Firefox和Chrome都在构建这种智能。如果我使用IE8,那么它将继续使用空字符串搜索(请求服务器)submit
是您应该使用的<代码>单击
仅当您单击按钮时才会触发。但是,还有其他提交表单的方法(例如,从其中一个表单字段按enter)
有关返回false
和防止默认事件的更多信息,请参见以下内容:
从您的更新中,submit
应该绑定到表单,而不是submit按钮。submit
是您应该使用的按钮<代码>单击
仅当您单击按钮时才会触发。但是,还有其他提交表单的方法(例如,从其中一个表单字段按enter)
有关返回false
和防止默认事件的更多信息,请参见以下内容:
在您的更新中,submit
应该绑定到表单,而不是submit按钮。您正在比较两个元素的两个不同事件。单击事件用于按钮,提交事件用于表单。单击内部返回false会阻止表单提交的原因是表单从未收到单击事件的通知。不过,您需要使用submit。您正在比较两个元素的两个不同事件。单击事件用于按钮,提交事件用于表单。单击内部返回false会阻止表单提交的原因是表单从未收到单击事件的通知。不过,您可能希望使用submit。乍一看,您似乎将提交处理程序设置在了错误的元素上
当像这样捕获表单提交时,通常最好捕获实际的提交事件,而不是提交按钮的单击事件,因为并非所有浏览器都在用户按Enter键时模拟单击事件
但是,提交事件仅适用于表单本身,而不适用于提交按钮。我不确定您的HTML是如何设置的,但下面是我要做的,希望您可以很容易地将其适应您的情况
<!-- HTML -->
<form id="search-box" action="/search">
<label>Search: <input name="q"></label>
<button type="submit">Go</button>
</form>
乍一看,您似乎将提交处理程序设置在了错误的元素上
当像这样捕获表单提交时,通常最好捕获实际的提交事件,而不是提交按钮的单击事件,因为并非所有浏览器都在用户按Enter键时模拟单击事件
但是,提交事件仅适用于表单本身,而不适用于提交按钮。我不确定您的HTML是如何设置的,但下面是我要做的,希望您可以很容易地将其适应您的情况
<!-- HTML -->
<form id="search-box" action="/search">
<label>Search: <input name="q"></label>
<button type="submit">Go</button>
</form>
这是公认的答案,因为它解释了阻止单击的默认操作也阻止提交操作的原因。(因为它“好像”从未被点击过)这是公认的答案,因为它解释了为什么阻止点击的默认操作也会阻止提交操作。(因为它“好像”从未被点击过)+10用于解释Firefox对Enter键模拟的点击,Chrome+10用于解释Firefox和Chrome对Enter键模拟的点击