jQuery:仅在包含3个表单的页面中将事件附加到2个表单

时间:2016-07-13 17:35:39

标签: jquery forms events

我有一个包含3个表单的页面,每个表单都有唯一的ID。我也有两个脚本,一个应该用两个表单调用,但不是第三个,另一个只用第三个。我只能通过这样选择将脚本附加到第三个:

"/"

但是如何将其他脚本仅附加到第一个和第二个表单? 我试图将它附加到这样的所有形式:

$("#third_form")

但显然这也附加到$('form') 所以我虽然可以查看提交的表单

#third_form

但它没有用。 有什么想法吗?

4 个答案:

答案 0 :(得分:2)

您可以使用逗号分隔符,来传递多个选择器:

$('#first_form,#second_form')

希望这有帮助。

$('#first_form,#second_form').on('submit', function(){
  alert('First or Second_form');
})
$('#third_form').on('submit', function(){
  alert('Third form');
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form id='first_form'>
  <input type='submit' value='First form submit'/>
</form>
<br/>
<form id='second_form'>
  <input type='submit' value='Second form submit'/>
</form>
<br/>
<form id='third_form'>
  <input type='submit' value='Third form submit'/>
</form>

答案 1 :(得分:1)

$('#first_form, #second_form')

答案 2 :(得分:1)

if($(form).attr('id') != 'third_form'){ ... }

$(&#39; form&#39;),你需要选择id值并将其与另一个选择器进行比较,而不是整个对象 - $(form)。

答案 3 :(得分:0)

  

var form = $(this);

     

if(form!='#third_form'){...}

     

但它不起作用。有什么想法吗?

因为form是一个jQuery对象,你想要将它与一个字符串进行比较。所以,你可以这样做:

  

if(this.id!='#third_form'){...}

您可以使用“event.target.id”或“this.id”,例如:

$(function () {
  $('form').on('click', function(e) {
    // or this.id
    if (e.target.parentNode.id == 'third_form' || e.target.id == 'third_form') {
      alert('third_form');
    } else {
      alert('one of the first two forms')
    }
  })
});
<script src="https://code.jquery.com/jquery-1.12.4.min.js"></script>

<form id="first_form">
    first_form<br>
    First name:<br>
    <input type="text" name="firstname"><br>
    Last name:<br>
    <input type="text" name="lastname">
</form>
<form id="second_form">
    second_form<br>
    First name:<br>
    <input type="text" name="firstname"><br>
    Last name:<br>
    <input type="text" name="lastname">
</form>
<form id="third_form">
    third_form<br>
    First name:<br>
    <input type="text" name="firstname"><br>
    Last name:<br>
    <input type="text" name="lastname">
</form>