看來,輸入被鎖定,直到我輸入一個正確格式的電子郵件地址,然後,然後才能夠被解鎖/無焦點的元素。這太奇怪了,因爲如果我不能聚焦任何其他元素,那麼噹噹前元素仍然是焦點時,未聚焦事件如何觸發。你認爲它必須與服務器端的東西有關嗎?
所以我有這樣的一段代碼,具有由服務器生成的,所以我不能直接做標記中的onblur=function()
輸入HTML。相反,我使用td
的onclick事件將事件處理程序綁定到輸入。
<td id="emailInput" class="label" onclick="emailValidation(event);">
@Html.EditorFor(model => Model.EmailAddress, new { Class = "ignore"})
</td>
<td id="emailValidate" style="display: none">
<label>Please enter a valid email address</label>
</td>
在JavaScript文件
我綁定的事件處理程序,像這樣
function emailValidation(e) {
$(e.target).on("blur", function() {
console.log("what target e is");
console.log(e.target);
var inputVal = $(e.target).val();
var re = /[A-z0-9]*[\.?[\w+]+[A-z0-9][email protected][A-z0-9][\.?[\w+]+\.[A-z][A-z][A-z]/;
if (!re.test(inputVal)) {
$(e.target).focus();
$("#emailValidate").css("display", "inline-block");
} else {
$("#emailValidate").css("display", "none");
}
});
}
我檢查開發者控制檯和e.target是輸入元素我想要的。正在發生的事情是,onblur事件在被追加後被觸發並且輸入未被對焦,即使輸入元素不再焦點,我只是在屏幕上點擊隨機區域。我是否誤解了某些東西?有沒有更好的定義,我可以得到比the w3school,the developer.mozilla,並且this weird one
編輯
我試圖創建的jsfiddle(W/O服務器的東西)來證明,它工作得很好所以細看檢查我看到輸入元素沒有被忽略。單擊遊標的位置並不重要,我們現在沒有其他元素可以聚焦。
編輯2
按要求JSFiddle,但它在這裏工作,但不能在一個與服務器端的東西
在您點擊''後,您的輸入是否生成?你的輸入是否在''內?向我們展示小提琴。 'event.target'是生成事件的目標。 – PHPglue
@PHPglue我以爲也是這樣,但看着console.log它是輸入元素而不是目標的td元素 –
由於您的輸入位於''標籤內。它也可以成爲目標。 – PHPglue