Javascript`onblur`事件级联`html`输入元素的`Id`

时间:2018-02-07 11:29:00

标签: javascript html

Javascript onblur事件将Id输入元素的html级联到前面的输入元素,而不是传递他们自己的onblurred元素的id

var ruleStringParam = {
    	ruleset : "",
    	appid : "",
    	rule : "",
    	trigger : {name : "", type : "", timerparams : {repeatEvery : "", scheduleDate : "", scheduleTime : "", expiryDateTime : ""}, 
    		state : "", device : "", transit : "", range : ""},
    	condition : {statement : ""},
    	action : {type : "", subject : "", object : ""}
    }
    
var buildRuleJSON = function(elementId) { 
    switch (elementId) {
    case 'ruleset':
      ruleStringParam.ruleset = document.getElementById(elementId).value;
      alert('Id of ruleset: ' + elementId); 
    case 'appId':
      ruleStringParam.appId = document.getElementById(elementId).value;
      alert('Id of appId ' + elementId);
    case 'rule':
      ruleStringParam.rule = document.getElementById(elementId).value;	
      alert('Id of rule ' + elementId);
    default:
      alert("default");
    }
}
<body style="background-color:powderblue;">
  <form id="form1" name="form1">
    Ruleset name:<br>
    <input id='ruleset' type='text' onblur="buildRuleJSON(this.id)"><br>
    AppId:<br>
    <input id='appId' type='text' onblur='buildRuleJSON(this.id)'><br>
    Rule name:<br>
    <input id='rule' type='text' onblur='buildRuleJSON(this.id)'><br>
  </form>
</body>	

2 个答案:

答案 0 :(得分:1)

通过单击输入字段B来模糊输入字段A,然后B接收焦点。

但是因为你正在发射alert,所以当显示警报时,焦点会从B中移除,因此B的模糊处理程序会触发......

请勿在此处使用alert。如果您需要调试输出以追溯脚本的确切行为,请改用console.log,然后检查浏览器控制台。

答案 1 :(得分:1)

你需要摆脱你的情况:

当您编写switch语句时,如果您不break输出,则继续执行:

switch (elementId) {
    case 'ruleset':
        ruleStringParam.ruleset = document.getElementById(elementId).value;
        alert('Id of ruleset: ' + elementId); 
        break;
    case 'appId':
        ruleStringParam.appId = document.getElementById(elementId).value;
        alert('Id of appId ' + elementId);
        break;
    case 'rule':
        ruleStringParam.rule = document.getElementById(elementId).value;    
        alert('Id of rule ' + elementId);
        break;
    default:
        alert("default");
        break;
}