我有以下代码:
<form action="" id="search-form">
<fieldset>
<div class="rowElem">
<input type="text">
<a href="#" onClick="document.getElementById('search-form').submit()">
<div>Search</div>
</a></div>
</fieldset>
</form>
<script>
$(document).ready(function() {
$('#search-form').submit(function(event){
event.preventDefault();
alert("test");
});
});
</script>
当我提交表格时,我看不到警报......我错过了什么?
谢谢,
答案 0 :(得分:4)
您需要移除突兀的onclick事件并转而绑定到链接。
您提交后无法提醒,因为这会执行您为表单提供的任何操作(最有可能将您带离页面。如果您坚持这样做,以下操作就会有效。
<form action="" id="search-form">
<fieldset>
<div class="rowElem">
<input id="name" type="text"></input>
<a href="#" id="search" >Search</a>
</div>
</fieldset>
</form>
<script>
$(document).ready(function() {
$('#search').bind('click', function () {
// Alert the name BEFORE you do the form post
alert($('#name).val());
$('#search-form').submit(function(event){
});
});
});
</script>
我在这里有一个有效的JSFiddle示例:http://jsfiddle.net/7jqUF/5/
相反,如果您想要一个AJAX解决方案,那么您需要做的不仅仅是表单发布,例如ajax帖子
<script>
$(document).ready(function() {
$('#search').bind('click', function () {
// Alert the name BEFORE you do the form post
alert($('#name).val());
$.post('/ServerUrl/method', { name: $('#name').val() });
});
});
</script>
答案 1 :(得分:1)
你为什么不做像
这样的事情<form action="" id="search-form">
<fieldset>
<div class="rowElem">
<input name="query" type="text" /><br />
<a class="search" href="#">Search</a>
</div>
</fieldset>
</form>
和
var form = $('#search-form');
$('.search', form).click(function(event){
event.preventDefault();
var query = $('input[name="query"]', form).val();
alert("test: " + query);
});
演示:Fiddle
如果您想将params用作ajax请求的一部分,您可以执行类似
的操作var form = $('#search-form');
$('.search', form).click(function(event){
event.preventDefault();
var params = form.serialize();
alert("test: " + form.serialize());
$.ajax({
url: '...',
data: params,
....
})
});
答案 2 :(得分:0)
请尝试以下代码。从$(document).ready
函数
<a href="#" onclick="document.getElementById('search-form').submit();">