gpt4 book ai didi

jquery - 表单输入焦点问题

转载 作者:行者123 更新时间:2023-11-28 05:06:25 24 4
gpt4 key购买 nike

我想在我的注册表中使用 jQuery Masked Input Plugin (http://digitalbush.com/projects/masked-input-plugin/)。我的表单看起来像那样

...

<input  class="part1" type="text" name="lname"  value="Last Name" onfocus="if(this.value=='Last name') {this.style.color='#aea592';this.style.fontStyle='normal'; this.value=''};" onblur="if(this.value=='')  {this.style.color='#aea592'; this.style.fontStyle='italic'; this.value='Last name'}"  />
<input class="part2" type="text" id="dob" name="dob" value="Date of Birth" onfocus="if(this.value=='Date of Birth') {this.style.color='#aea592';this.style.fontStyle='normal'; this.value=''};" onblur="if(this.value=='') {this.style.color='#aea592'; this.style.fontStyle='italic'; this.value='Date of Birth'}" />

...

文件结束

<script src="core/code/js/mask.js"></script>
<script type="text/javascript">
jQuery(function($) {
$('#dob').mask('99.99.9999', {placeholder:' '});
});
</script>

当您打开页面时,姓氏字段显示“姓氏”一词,但出生日期不显示任何内容。 http://prntscr.com/2miaa我怎样才能只为 onfocus 事件激活 mask 插件?

最佳答案

Yarr... 好吧,首先不要在标记中放置太多脚本。它很难阅读,而且会更难维护。让我们先尝试分离表单的样式和功能。

编辑:可以在 http://jsfiddle.net/ninjascript/RuFHK/2/ 找到一个工作示例

CSS

input { color: #aea592; }
input.default { font-style: italic; }

HTML

<input class="part1 default" type="text" name="lname" value="Last Name"/>
<input class="part2 default" type="text" id="dob" name="dob" value="Date of Birth"/>

JavaScript

$('input').bind('focus', function() {
var el = $(this);
if (el.hasClass('default')) {
el.removeClass('default').val('');
}
});

...好吧,这样更容易理解一些。现在您只想在焦点上发生一件事,那就是对#dob 元素中包含的值应用掩码。这是编辑后的 block :

$('input').bind('focus', function() {
var el = $(this);
if (el.hasClass('default')) {
el.removeClass('default').val('');
}
if (el.attr('id') === 'dob') {
$(this).mask('99.99.9999', {placeholder:' '});
}
});

现在您的输入应该在获得焦点后被屏蔽。

如果您想确保在提交时返回一些 值,您始终可以在“blur”上验证内容。我真的不想为这个表单中的每个字段编写 if 语句,所以我将映射每个字段名称及其默认值并引用它:

var defaultValues = {
'lname': 'Last Name',
'dob': 'Date of Birth'
};

现在,只要我需要用我的默认值重新填充该字段,我就可以引用该 map 。对于 DOB 字段,输入掩码插件似乎也有一个“取消掩码”选项。不幸的是,因为掩码 中的字符是#dob 字段值的一部分,我们不能只检查空值。相反,我将使用一个正则表达式来检查只包含空格和“.”的值。字符:

$('input').bind('blur', function() {
var el = $(this);
var name = el.attr('name');

// Really we only want to do anything if the field is *empty*
if (el.val().match(/^[\s\.]*$/)) {

// To get our default style back, we'll re-add the classname
el.addClass('default');

// Unmask the 'dob' field
if (name === 'dob') {
el.unmask();
}

// And finally repopulate the field with its default value
el.val(defaultValues[name]);
}
});

关于jquery - 表单输入焦点问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7048868/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com