- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个简单的 HTML 表单,其中包含输入:
<input placeholder="Default text" name="title" />
我有一个 JS 函数来检查输入的值是否为空,如果是,则用占位符的值填充它(对于非 Webkit 浏览器)。现在我想阻止保存占位符的值,所以我编写了一个像这样的函数:
$('form').each(function () {
$(this).submit(function (event) {
$(this).find('input').each(function () {
var default_value = $(this).attr("placeholder").replace(/\r/g, "");
if ($(this).attr("type") != "password" && $(this).attr("type") != "submit") {
if (default_value == $(this).val()) {
$(this).attr("name", "");
}
}
});
});
});
这基本上从输入中删除了“name”属性。我添加了 preventDefault()
因为我不知道可能会出现什么问题,除了在我清除名称之前发送表单之外。我认为它可以解决问题,但不知怎的,默认值仍然被保存。
最佳答案
注意:Firefox 4+、Opera 11+、Chrome 3+ 和 Safari 3+ 支持占位符。 Internet Explorer 将在版本 10 中开始支持。因此,如果您正在编写填充程序,请记住您不必针对支持的用户代理进行填充。
如果该值等于默认值,您发布的代码将删除元素的 name
属性。我不认为这就是您的意思...如果该值等于默认值,您不想将其清空吗?
if (default_value == $(this).val())
$(this).attr("name", "");
// should be...
if (default_value == $(this).val())
$(this).val('');
此外,已经有几个适用于 jQuery 的占位符 shim 脚本...查看一个并考虑使用它,或者看看它们如何处理表单发布并记下。 Here's one of many .
<小时/>编辑您的脚本中还有一些其他问题,它导致 JavaScript 错误并且无法完成。如果您使用 Firebug 进行调试,请尝试在处理表单时打开控制台中的“持久”选项,以保留请求之间的错误。
问题是,您在检查元素是否具有占位符文本之前先检查占位符文本。请参阅下面的修复程序。
$('form').each(function () {
$(this).submit(function (event) {
$(this).find('input').each(function () {
if ($(this).attr("type") != "password" && $(this).attr("type") != "submit") {
var default_value = (
$(this).attr("placeholder") ?
$(this).attr("placeholder").replace(/\r/g, "") :
false
);
if (default_value && default_value == $(this).val()) {
$(this).attr("name", "");
}
}
});
});
});
jsFiddle:http://jsfiddle.net/a8DQS/
<小时/>编辑2
对于那些不使用 jQuery 的人来说,这是简单的 javascript 方法,可以完成与 OP 的 jQuery 代码相同的操作:
var forms = document.getElementsByTagName('form');
var frm_ct = forms.length;
for (var x = 0; x < frm_ct; x++) {
var handler = function (e) {
var elements = this.elements;
elmnt_ct = elements.length;
for (var y=0; y < elmnt_ct; y++) {
if (
elements[y].tagName == 'INPUT' && (
elements[y].type != 'password' &&
elements[y].type != 'submit'
)
) {
var default_value = (
elements[y].placeholder ?
elements[y].placeholder.replace(/\r/g, "") :
false
);
if (default_value && default_value == elements[y].value)
elements[y].value = '';
}
}
}
if (forms[x].addEventListener)
forms[x].addEventListener('submit', handler, false);
else
forms[x].attachEvent('onsubmit', handler);
}
jsFiddle:http://jsfiddle.net/nDLZJ/2/
关于javascript - 阻止保存 "placeholder",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8375604/
我已经开始学习 tensorflow,但很难理解占位符/变量问题。 我正在尝试编写一个矩阵乘法函数。它在使用 tf.constant 时有效,但我很难理解如何使用变量 这是我的代码 import te
我正在尝试匹配两个 URL,一个带有占位符,一个带有 Angular 中的填充占位符和 TypeScript。 例如 URL 在占位符被填充之前: http://this/is/{placeholde
我正在尝试理解 std::bind。我编写了以下程序。 #include
结果:两个属性文件均已加载 其中properties_location是“a.properties,b.properties” result: Exception in thread "main"
根据this推荐的解决方案是让 Placeholder 实现 Parcelable 接口(interface)。但在我的例子中,Placeholder 已经是一个接口(interface),因此无法实
当我尝试更改 input 元素的 placeholder 属性时,它已成功完成。如果我将其更改为 MVC 中的 textboxfor 或 textareafor 元素,即使我使用 @placehold
我在我的 Pycharm 中编写了以下代码,它在 Tensorflow 中执行完全连接层 (FCL)。占位符发生无效参数错误。所以我在占位符中输入了所有的dtype、shape和name,但我仍然得到
当我尝试使用 removeAttr('placeholder') 从输入元素中删除占位符属性时:placeholder-shown 伪类不会从元素中删除,而是会更改输入值的颜色。 $(document
这很可能是一个错误,但我在这里报告它以供引用,并希望有人能够提出解决方法。 IE 11 在 textarea 元素上原生支持 placeholder 属性。那太棒了。但是,向 DOM 添加一个带有占位
尝试运行此代码时出现上述意外错误: # -*- coding: utf-8 -*- """ Created on Fri Jun 24 10:38:04 2016 @author: andrea ""
MVC 5.2.2 Razor 3.2.2 剑道 MVC UI v2014.2.903 在 Javascript 中,当我想更改 ComboBoxFor 的占位符文本时,我想我可以这样做: @mode
我想像这样向占位符添加一个图标 $("#tag_list").select2({ allowClear: true, placeholder: " inout
我们可以在play2的anorm中编写如下的sqls: def findById(id: String): Option[Link] = DB.withConnection {implicit con
在我的 iOS 应用程序中,我有一个简单的 View ,我以编程方式向其中添加了 TabBar 和 Navigation Bar。我使用 Interface Builder 添加了几个 GUI 元素。
我有这个代码 var i = 1 println(i) //result is 1 println(%02i) //is wrong 我希望它输出 01 而不是 1 最佳答案 不幸的是,你不能像这
我有一个简单的 HTML 表单,其中包含输入: 我有一个 JS 函数来检查输入的值是否为空,如果是,则用占位符的值填充它(对于非 Webkit 浏览器)。现在我想阻止保存占位符的值,所以我编写了一个
我正在使用 mathiasbynens / jquery-placeholder在 IE9 中启用占位符。我遵循了自述文件中提到的简单步骤。 但我在 $('input, textarea').plac
由于并非所有用户都保证支持 HTML 5 占位符属性,因此我尝试在 JavaScript 中为其构建解决方法: $(document).ready(function() { var searc
下面的链接将在 http://placehold.it 提供的占位符图像上打印“hello world” http://placehold.it/200&text=hello+world 是否可以在上
有没有办法设置“占位符”并稍后在逐行创建文本文件时编辑此部分,或者我是否必须最后进行行搜索并编辑此部分? 我想用常量对选定的行进行计数,如果到达文件末尾,我想将列表常量的总和写入文件头。 CONSTA
我是一名优秀的程序员,十分优秀!