如何清空输入文本框中的内容

leetow2006 2019-06-05 03:22:39
我的输入文本框的ID是uname,我在该输入框中定义onblur函数,该函数是清空并设置焦点,请看:

function clear() {
   
var inputItem=document.getElementById("uname");

if(!inputItem.value.trim())
{
Simulate_alert("输入不能为空");//这是个模拟alert的函数
inputItem.value="";
inputItem.focus();
}
}
我什么都没有输入时,当我按TAB键跳出时,会出现"输入不能为空",但是该输入框会出现“undefined”,
光标不会跳到该输入框,请问这是为什么?怎么解决?(我希望输入框为空,并且光标也在该输入框中)
...全文
635 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
xzxwsk 2019-06-10
  • 打赏
  • 举报
回复
引用 8 楼 leetow2006 的回复:
[quote=引用 6 楼 xzxwsk 的回复:]
Simulate_alert这个是自定义的方法,不能像原生的alert一样阻止后续代码同步执行,而是异步弹出,后续代码继续执行focus,但弹出的弹窗又会导致input的onblur又一次触发吧

我把Simulate_alert这个是自定义的方法去掉,还是会出现“undefined”[/quote]

首先页面不能只有一个控件,这样按tab就会跳出页面,从而导致focus失败,另外,你的代码亲测去掉Simulate_alert后是没有报undefined错的,你的代码可能没贴完,还有别的什么因素导致的
leetow2006 2019-06-07
  • 打赏
  • 举报
回复
我把程序改为:
if(!inputItem.value.trim())
{
Simulate_alert("输入不能为空");//这是个模拟alert的函数
document.querySelector('uname').value = "";
document.querySelector('uname').focus();
}
当按Tab键时,是不会出现undeifined,但是光标也不合回到输入框,而是跳到下一个输入框。如果把document.querySelector('uname').focus();改为document.getElementById("uname").focus();光标
也是跳到下一个输入框,还能怎么改
leetow2006 2019-06-07
  • 打赏
  • 举报
回复
引用 7 楼 漠子凉 的回复:
第一:先测试一下浏览器有没有问题

<input type="text" id="a">
<script type="text/javascript">
document.querySelector('#a').onblur = function() {
document.querySelector('#a').value = ""
document.querySelector('#a').focus()
}
</script>

第二:把所有条件去掉,直接失去焦点直接 inputItem.value="";看看是否有异常
第三:监听事件是否有其他的地方赋值inputItem.value=undeifined的变量;

我单独运行你的这个小程序,再按Tab键时,没有出现undeifined,请问我的代码要怎么改
leetow2006 2019-06-07
  • 打赏
  • 举报
回复
引用 6 楼 xzxwsk 的回复:
Simulate_alert这个是自定义的方法,不能像原生的alert一样阻止后续代码同步执行,而是异步弹出,后续代码继续执行focus,但弹出的弹窗又会导致input的onblur又一次触发吧

我把Simulate_alert这个是自定义的方法去掉,还是会出现“undefined”
leetow2006 2019-06-06
  • 打赏
  • 举报
回复
引用 3 楼 天际的海浪 的回复:
Simulate_alert 换成原生的alert 试试。看看是不是Simulate_alert引起的问题

不是由Simulate_alert引起的,我改成alert,也是会出现“undefined”,能不能让它消失?
漠子凉 2019-06-06
  • 打赏
  • 举报
回复
第一:先测试一下浏览器有没有问题

<input type="text" id="a">
  <script type="text/javascript">
    document.querySelector('#a').onblur = function() {
      document.querySelector('#a').value = ""
      document.querySelector('#a').focus()
    }
  </script>
第二:把所有条件去掉,直接失去焦点直接 inputItem.value="";看看是否有异常 第三:监听事件是否有其他的地方赋值inputItem.value=undeifined的变量;
xzxwsk 2019-06-06
  • 打赏
  • 举报
回复
Simulate_alert这个是自定义的方法,不能像原生的alert一样阻止后续代码同步执行,而是异步弹出,后续代码继续执行focus,但弹出的弹窗又会导致input的onblur又一次触发吧
天际的海浪 2019-06-05
  • 打赏
  • 举报
回复
引用 1 楼 囧 的回复:
字符串本身没有trim()方法,可以用jQuery的$.trim()函数
ie9之后字符串已经原生支持trim()方法了。
天际的海浪 2019-06-05
  • 打赏
  • 举报
回复
Simulate_alert 换成原生的alert 试试。看看是不是Simulate_alert引起的问题
leetow2006 2019-06-05
  • 打赏
  • 举报
回复
我没有用jQuery这些组件,请问能不能直接用JS的?另外:当输入为空时,有显示“输入不能为空",说明有执行if语句。
我想问:当输入为空,并跳出时,为什么输入框中会出现“undefined”?能否不让它出现?
2019-06-05
  • 打赏
  • 举报
回复
字符串本身没有trim()方法,可以用jQuery的$.trim()函数

87,993

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧