我正在使用一个jquery插件在IE9上设置输入文本占位符,这给我带来了一个问题。
有一个页面,用户可以选择一个用户名来提取或在文本字段中写入自定义用户名。这个插件在IE9上为这个输入文本添加了一个value属性来模拟占位符。一切都很好,但是。。
我收到了一个验证错误,就好像输入文本填充不正确,错误地填充了发送到表单的假占位符。如果在提交表单时使用IE9,我试图从输入中删除该属性,但删除属性或使用jquery触发重置都有效。我试了几件事,但没有成功。。
如果value属性等于占位符的内容(在这种情况下为"键入用户名"),我想清除或删除发送到表单的值,是否可以在发送之前重置或删除提交事件中输入的值?
我试过这样的东西:
jQuery('button[type=submit]').on('click', function() {
if (jQuery('#customUsername').val().indexOf('Type Username') >= 0 ) {
jQuery('#customUsername').trigger('reset');
jQuery('#customUsername').removeAttr('value');
jQuery('#customUsername').removeAttr('placeholder');
}
});
但它正在被发送并得到验证错误。。。
非常感谢!
由于默认情况下<button type="submit">
会提交表单,因此您应该先通过event.preventDefault()
删除默认行为,然后执行您想要的操作。最后,您可以通过.submit()
功能提交表单。示例代码如下:
$('button[type=submit]').click(function( event ) {
event.preventDefault();
if ($('#customUsername').val().indexOf('Type Username') >= 0 ) {
$('#customUsername').trigger('reset');
$('#customUsername').removeAttr('value');
$('#customUsername').removeAttr('placeholder');
$('#frm').submit();
}
});