在输入字段中获取文本并检查它是否等于它的值属性?

时间:2011-07-15 08:47:14

标签: jquery forms input

页面加载时我有这个

<input class="input" id="accountNameUsernameForm_name" name="profile[real_name]" size="30" type="text" value="George">

当按下提交触发器时,我想检查输入字段中的当前文本是否与其value属性相同?

if ( $('.input').val() != $('.input').attr('value') ) {
        $(this).addClass('formLoading');
}

然而问题是,val()和attr('value')总是相同的。什么函数现在检索输入中的当前文本而不查看其value属性?

谢谢

顺便说一句。它不适用于text()

6 个答案:

答案 0 :(得分:7)

// save the default value on page load
var defaultUsername = $('.input').val();

// on submit, compare
if ( $('.input').val() != defaultUsername ) {
        $(this).addClass('formLoading');
}

答案 1 :(得分:0)

使用输入的ID而不是input,然后尝试这个..

inputValue = $("#accountNameUsernameForm_name").val()

然后在你的表单处理程序中尝试这个..

inputText =  $("#accountNameUsernameForm_name").attr('value') 

    if(inputValue ! = inputText ){
        $(this).addClass('formLoading');

}

答案 2 :(得分:0)

$('.input').val() is equal to  $('.input').attr('value') always.

我建议您包含一个隐藏字段或将值保存在变量

参见示例: http://jsfiddle.net/r3KZu/6/

答案 3 :(得分:0)

问题是当文本被更改时,value属性更新。在页面加载时,您应该将初始值存储为变量,然后在回调中检查它。

答案 4 :(得分:0)

对此有所了解:

$('.input').each(function() {
    if($(this).val() != this.defaultValue) {
        $(this).addClass('formLoading');
    }
});

答案 5 :(得分:0)

使用defaultValue属性。

$('.input')[0].defaultValue

defaultValue属性设置或返回值属性中指定的文本字段的默认值。

有时人们会忘记jQuery只是JavaScript,简单的事情应该以简单的方式完成。