表格提交连接到js事件不起作用

时间:2013-03-14 03:31:38

标签: javascript html

我有以下代码:

  <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>

当我提交表格时,我看不到警报......我错过了什么?

谢谢,

3 个答案:

答案 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();">