将文本输入的值与默认值进行比较

时间:2010-08-20 15:39:27

标签: javascript jquery

对于定义为:

的文本输入
<input type="text" name="Email0" id="Email0" value="1st Email" /><br />

如果用户更改了该文本框的值,我只需将其与表单提交一起传递...如果他们没有改变它 - 我需要传递值'null'。

$('#frmSignup').submit(function () {
    if (Email0.value != Email0.defaultValue) {
        alert("hit here"); //not hitting here
    }
});

你会注意到jQuery存在,但我不清楚如何将输入的defaultValue检索到jQuery。

THX

2 个答案:

答案 0 :(得分:4)

您可以使用数组语法...

从jQuery对象引用底层DOM元素
$("#frmSignup").submit(function () { 
    var email = $("#Email0")[0]; // gets DOM element

    if(email.value != email.defaultValue) { 
      alert("hit here");
    } 
}); 

答案 1 :(得分:0)

有几种可能性:

  1. 如果您可以更改html的布局,请更改您的输入:

    <input type="text" name="Email0" id="Email0" value="1st Email" data-default="1st Email"/>
    

    然后你可以检查这样的变化:

    $('#frmSignup').submit(function){
      $form = $(this).closest('form');
      $email = $('input[name=Email0]', $form);
      if ($email.val() != $email.attr('data-default')) {
        // value has changed
      }
    });
    
  2. 如果您需要纯JavaScript解决方案,以下代码将在您更改之前存储默认值:

    $(function(){ // short version of $(document).ready(callback);
      $email = $('#frmSignup input[name=Email0]');
      $email.data('default',$email.val());
    });
    

    现在您可以查找以下更改:

    $('#frmSignup').submit(function){
      $form = $(this).closest('form');
      $email = $('input[name=Email0]', $form);
      if ($email.val() != $email.data('default')) {
        // value has changed
      }
    });