设置不允许更改的输入值

时间:2010-09-09 01:20:16

标签: javascript jquery

我有以下文本框输入代码。我没有访问它来添加默认值,所以我使用此Jquery代码添加值,然后禁用输入但它不发送添加的值。我如何添加值但不允许他们更改它。我打算使用“隐藏”,但我希望他们看到它只是无法改变它。

$("input[type='text'][name='ShipCity']").val('Madison').attr('disabled', 'disabled');



<input type="text" style="background-color: rgb(255, 255, 0);" value="" name="ShipCity" maxlength="45" size="25">

1 个答案:

答案 0 :(得分:2)

编辑:另一种选择是禁用字段,并在提交表单时启用它们:

$("input[type='text'][name='ShipCity']").val('Madison').attr('disabled', 'disabled');

$("form").submit(function() {
    $(':input', this).removeAttr('disabled');
});

我认为这无论如何都应该有效。


原始回答:

这将return false;keypress事件。

此外,它使用jQuery的.data()存储默认值,并在blur事件处理程序中检查该值。

这样做的原因是可以在没有按键事件的情况下输入新值(通过GUI菜单)。

$("input[type='text'][name='ShipCity']")
    .val('Madison')                  // give default value
    .data('defaultVal', 'Madison')   // remember default value
    .keypress(function() {
        return false;                // prevent keypress events
    })
    .blur(function() {
        if(this.value !== $.data(this, 'defaultVal')) // set back to the default
            this.value = $.data(this, 'defaultVal');  //   if it was changed via
    });                                               //   the GUI menu

修改

这是一个允许您这样做的版本,只需输入一次默认值即可。 (其他方面完全相同。)

示例: http://jsfiddle.net/cdzuR/

$("input[type='text'][name='ShipCity']")
    .data('defaultVal', 'Madison')  // You only need to give the default once
    .val(function() { return $.data(this, 'defaultVal'); })
    .keypress(function() {
        return false;
    })
    .blur(function() {
        if(this.value !== $.data(this, 'defaultVal'))
            this.value = $.data(this, 'defaultVal');
    });