給easyui-input元素新增js原生方法
阿新 • • 發佈:2019-01-02
前言
當前專案中一直使用easyui框架,現在產品要求將某個easyui-textbox中只能輸入數字,又因為easyui-numberbox的字首0的個數不能做成無限個,所以只能在easyui-textbox的基礎上進行修改了。 問題解決後,考慮到剛接觸easyui時遇到的一些問題和這個相似,特地總結出來,供大家參考。原因
easyui的input的元素是在html原生的input元素上進行的一次封裝,所以html原生的一些方法在easyui上是不支援的。 例如:想在easyui-textbox的input上使用onkeydown等方法<input class="easyui-textbox" style="width: 170px;" id="RoomCode" name="Code" onkeydown="return anyOneFunc(event)">
或是:想給textbox增加一個placehoder
<input class="easyui-textbox" style="width: 170px;" id="RoomCode" name="Code" placehoder="123">
以上這兩種寫法是無效的。
我們通過瀏覽器的檢查元素功能可以發現,新增placehoder的程式碼會被解析為如下程式碼:
解決方案
js檔案編寫函式:
上述程式碼就是找到html原生的input屬性,在進行屬性的新增。 呼叫方式:文字框只允許輸入數字//easyui物件新增屬性 function EasyUiAttrProperty(JqueryObj, PropertyName,PropertyValue) { var span = JqueryObj.siblings("span")[0]; var targetInput = $(span).find("input:first"); if (targetInput) { $(targetInput).attr(PropertyName, PropertyValue); } }
EasyUiAttrProperty($('#FloorCode'), "onkeyup", "return CheckIsNumber(this);");
EasyUiAttrProperty($('#FloorCode'), "onafterpaste", "this.value=this.value.replace(/[^1-9]/g,'')");
function CheckIsNumber(obj)
{
var c = $(obj);
if (/^[0-9]*$/.test(c.val())==false) {//替換非數字字元
var temp_amount = c.val().replace(/[^0-9]/g, '');
$(obj).val(temp_amount);
}
}