我有以下文本框输入代码。我没有访问它来添加默认值,所以我使用此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">
答案 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');
});