关于标记到下一个非READONLY字段的问题

时间:2011-06-30 19:06:38

标签: javascript jquery javascript-events

在field1模糊时,field2设置为READONLY,但是我页面上的光标默认为field2,光标位于值的END处,当用户单击退格按钮时,可以删除该值。我希望能够将光标移动到页面上的下一个非READONLY或ENABLED字段。可以用jQuery吗?

任何帮助/指示将不胜感激。谢谢。

这是我的代码:

[code]
$(function() {
           $("#ARTransferForm\\:fromAccountAmt").blur(function() {
               var origAccountAmount = $("#ARTransferForm\\:fromAccountAmt").val();
               var fromAccountAmount = $("#ARTransferForm\\:fromAccountAmt").val();
               // Call validation "r2" function            
               var modFromAccountAmount = r2(fromAccountAmount);
               //alert("modFromAccountAmount = " + modFromAccountAmount);
               fromAccountAmount = $("#ARTransferForm\\:fromAccountAmt").val(modFromAccountAmount).val();
               //alert ("modified fromAccountAmount = " + fromAccountAmount);
               if (modFromAccountAmount != "N.aN") {
                   var firstChar = fromAccountAmount.charAt(0);
                   var fromAcctAmtLen = $("#ARTransferForm\\:fromAccountAmt").val().length;
                   if (firstChar == "-") {
                       var revFromAcctAmt = fromAccountAmount.substring(1, fromAcctAmtLen);
                       $("#ARTransferForm\\:toAccountAmt").val(revFromAcctAmt);
                       $("#ARTransferForm\\:toAccountAmt").attr("readonly", "readonly");
                   } else {
                       $("#ARTransferForm\\:toAccountAmt").val("-"+fromAccountAmount);
                       $("#ARTransferForm\\:toAccountAmt").attr("readonly", "readonly");                 
                   }
               } else {
                   $("#ARTransferForm\\:fromAccountAmt").val(origAccountAmount);
                   $("#ARTransferForm\\:fromAccountAmt").select();
                   alert("Invalid From Amount Format. Use ##.## (NO commas or $ sign)");
               }
           });
       });
[/code]

1 个答案:

答案 0 :(得分:0)

您是否尝试在RETURN TRUE之前修改tabindexes onblur,以控制光标的位置?这是一种黑客攻击,但你去了。

此外,您可以使用委托事件(可能在表单上)拦截并在任何会修改任何只读输入值的按键事件上返回false。类似的东西:

$('#ARTransferForm *[readonly]').live("keypress", function(event) {
    // compare keycode to blacklist: backspace, perhaps delete too?
    if(bKeyIsBlacklisted) {
        event.preventDefault();
        return false;
    }
});

(注意:这是非常伪的。你需要仔细检查sizzle的属性选择器的语法,以及jquery的事件委托签名。并且真实小心你的广告你的“无钥匙”网:尽量避免禁止使用键盘快捷键执行复制和其他操作。你需要检查修改键,以区分用户尝试键入“c”和Ctrl + C.

您正在测试哪种浏览器?