如果输入字段中存在一些文本,我想将输入字段的宽度设为100%。 我尝试了下面的jquery命令,但没有运气。
$("#field").change(function(){
if($(this).val() != '')
{
$(this).css("width",100%);
}
});
$('#field').on('change', function() {
if($(this).val()!='')
{
$(this).css("width",100%);
}
});
任何人都可以告诉我我做错了什么或建议任何替代方法吗?
答案 0 :(得分:3)
你知道元素丢失焦点后会发生“更改”事件,对吧?如果您想立即更改,请使用input
事件。
此外,100%
需要在引号中,因为这是您希望使用的实际值。
// the change event triggers after the focus is lost on the element
$('#field').on('change', function() {
if($(this).val()!=='') {
$(this).css("width","100%");
}
});
// The input event fires as the value changes
$('#field2').on('input', function() {
if($(this).val()!=='') {
$(this).css("width","100%");
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>
<input id="field" placeholder="type and then hit TAB">
</div>
<div>
<input id="field2" placeholder="just type">
</div>
答案 1 :(得分:1)
您需要将字符串设置为width属性的值
像:
$(this).css("width","100%");
否则js会将%
解释为模数运算符而不是单位
答案 2 :(得分:1)
因为100%不是数字。这是字符串;
$entityarray['nodes'][] = array( 'id' => 'example@email.com'
, 'group' => 1
);
&#13;
$('#field').on('input', function() {
if($(this).val() != '')
{
$(this).css("width","100%");
}else{
$(this).css("width","20%");
}
});
&#13;
答案 3 :(得分:1)
是的,您有拼写错误,将100%
更改为"100%"
。如果您想立即更改,请使用on keypress
或更好on input
:
$('#field').on('input', function() {
if ($(this).val() != '') {
$(this).css("width", "100%");
}else{
$(this).css("width", "50%");
}
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" id="field" style="width:50%;" />
&#13;