Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/458.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript忽略<;选择>;标签_Javascript_Jquery - Fatal编程技术网

Javascript忽略<;选择>;标签

Javascript忽略<;选择>;标签,javascript,jquery,Javascript,Jquery,我有一个javascript,它会禁用submit按钮,除非原始表单数据发生更改,我希望脚本忽略标记的更改。请帮我做到这一点 守则: $(function(){ $('form') .each(function(){ $(this).data('serialized', $(this).serialize()) }) .on('change input', function(){ $(thi

我有一个javascript,它会禁用submit按钮,除非原始表单数据发生更改,我希望脚本忽略
标记的更改。请帮我做到这一点

守则:

$(function(){

    $('form')
        .each(function(){
            $(this).data('serialized', $(this).serialize())
        })
        .on('change input', function(){
            $(this)             
                .find('input:submit, button:submit')
                    .attr('disabled', $(this).serialize() == $(this).data('serialized'))
            ;
         })
        .find('input:submit, button:submit')
            .attr('disabled', true)
    ;

});

谢谢

您可以在序列化时筛选select标记

$(function(){

    $('form')
        .each(function(){
            $(this).data('serialized', $(this).not('select').serialize())
        })
        .on('change input', function(){
            $(this)             
                .find('input:submit, button:submit')
                    .attr('disabled', $(this).not('select').serialize() == $(this).not('select').data('serialized'))
            ;
         })
        .find('input:submit, button:submit')
            .attr('disabled', true)
    ;

});
这段代码现在所做的是

  • 获取表单元素并使用
    $(this)
    获取表单中的所有内容
  • 通过使用
    .not('select')
    ,它表示-获取表单中除select标记之外的所有内容
  • 通过执行
    .serialize()
    ,它会显示-对表单中的元素进行快照,除了
    select
    标记
  • 通过拍摄快照,我们可以将该快照与提交期间的快照进行比较。如果快照相同,则表示没有更改,因此应禁用该按钮

  • 您可以检查事件是否由
    select
    元素触发。如果是,请阻止代码的进一步执行

    .on('change input', function(event) {
      if (event.target.nodeName !== 'SELECT') {
        $(this)             
          .find('input:submit, button:submit')
          .attr('disabled', $(this).serialize() == $(this).data('serialized'));
      }
    })
    

    .on('change','input',function(){
    可能会有所不同。您好。谢谢您的回复。我尝试了您的代码,但在更改选择标记的值时,提交按钮仍会解锁以提交。可能是因为您需要放弃选择选项-。而不是('select optoin'))