新足迹

 找回密码
 注册

精华好帖回顾

· 买新车的心路历程-------Prado VX-------多图 (2013-8-31) 灰太郎 · 8月美食活动-烧肉是这样上色的 3楼上做法了哦 (2009-8-15) rongerchen
· Lanshan:超极简单美味的甜点-Apple Crumble Slice(有详图) (2011-4-10) lanshan · 此贴献给所有猫本还在苦苦找工作的兄弟姐妹!!! (2006-7-13) bluesky
Advertisement
Advertisement
查看: 1657|回复: 23

jQuery 达人快出现。。。 [复制链接]

头像被屏蔽

禁止访问

发表于 2012-1-4 10:50 |显示全部楼层
此文章由 atransformer 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 atransformer 所有!转贴必须注明作者、出处和本声明,并保持内容完整
$(".uc_withdrawDetail  :input").focus(function () {
        //make sure at least one product has been selected
        if ($("input[type=radio]:checked").length == 0) {
            alert('Please select a product first!' + this.name);
            $("#TextBox_NameofPersonCompletingForm").focus();
            return;
        }
    });

死循环了,何解?
Advertisement
Advertisement

发表于 2012-1-4 10:51 |显示全部楼层
此文章由 pengzhao 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 pengzhao 所有!转贴必须注明作者、出处和本声明,并保持内容完整
眼花了。。。。

发表于 2012-1-4 10:53 |显示全部楼层
此文章由 porcorosso 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 porcorosso 所有!转贴必须注明作者、出处和本声明,并保持内容完整
  1. $("input[type=radio]:checked").length
复制代码
这个好像是选了页面所有的input,不是.uc_withdrawDetail里头的。。。
头像被屏蔽

禁止访问

发表于 2012-1-4 10:54 |显示全部楼层
此文章由 atransformer 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 atransformer 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 porcorosso 于 2012-1-4 10:53 发表
$("input[type=radio]:checked").length这个好像是选了页面所有的input,不是.uc_withdrawDetail里头的。。。


这个可以确定,是.uc_withdrawDetail里头的

发表于 2012-1-4 10:55 |显示全部楼层
此文章由 fnever 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 fnever 所有!转贴必须注明作者、出处和本声明,并保持内容完整
反复触发了focus了呗
头像被屏蔽

禁止访问

发表于 2012-1-4 10:57 |显示全部楼层
此文章由 atransformer 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 atransformer 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 fnever 于 2012-1-4 10:55 发表
反复触发了focus了呗


就是想知道怎么实现啊。

如果用户选择企图填写 withdraw 细节,必须先选择一个产品。
Advertisement
Advertisement

发表于 2012-1-4 10:57 |显示全部楼层
此文章由 porcorosso 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 porcorosso 所有!转贴必须注明作者、出处和本声明,并保持内容完整
  1. $(".uc_withdrawDetail  :input").focus(function () {
  2.         //make sure at least one product has been selected
  3.         if ($("input[type=radio]:checked").length == 0) {
  4.             alert('Please select a product first!' + this.name);
  5.             $("#TextBox_NameofPersonCompletingForm").focus();
  6.             return;
  7.         }
  8.     });
复制代码
看到了,你在focus时,如果length=0你手动focus了里头的textbox,所以死循环了

头像被屏蔽

禁止访问

发表于 2012-1-4 10:59 |显示全部楼层
此文章由 atransformer 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 atransformer 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 porcorosso 于 2012-1-4 10:57 发表
$(".uc_withdrawDetail  :input").focus(function () {
        //make sure at least one product has been selected
        if ($("input[type=radio]:checked").length == 0) {
            alert('Please selec ...




$("#TextBox_NameofPersonCompletingForm") 不在 uc_withdrawDetail  里面

发表于 2012-1-4 11:00 |显示全部楼层
此文章由 porcorosso 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 porcorosso 所有!转贴必须注明作者、出处和本声明,并保持内容完整


评分

参与人数 1积分 +2 收起 理由
atransformer + 2

查看全部评分

发表于 2012-1-4 11:15 |显示全部楼层
此文章由 典 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 典 所有!转贴必须注明作者、出处和本声明,并保持内容完整
不要Alert可能好些
我猜
因为Alert完了,点OK,又自动回去到Focus, 又Alert,点OK,又自动回去到Focus, 又Alert,点OK,又自动回去到Focus, 又Alert,
。。。。

[ 本帖最后由 典 于 2012-1-4 10:26 编辑 ]

发表于 2012-1-4 11:20 |显示全部楼层
此文章由 鱼羊鲜 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 鱼羊鲜 所有!转贴必须注明作者、出处和本声明,并保持内容完整
代码太少 都靠猜
Advertisement
Advertisement
头像被屏蔽

禁止访问

发表于 2012-1-4 11:48 |显示全部楼层
此文章由 atransformer 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 atransformer 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 鱼羊鲜 于 2012-1-4 11:20 发表
代码太少 都靠猜


发表于 2012-1-4 16:23 |显示全部楼层
此文章由 无视 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 无视 所有!转贴必须注明作者、出处和本声明,并保持内容完整
你的$("#TextBox_NameofPersonCompletingForm")也是selector $(".uc_withdrawDetail  :input")其中的一个
头像被屏蔽

禁止访问

发表于 2012-1-4 21:29 |显示全部楼层
此文章由 atransformer 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 atransformer 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 无视 于 2012-1-4 16:23 发表
你的$("#TextBox_NameofPersonCompletingForm")也是selector $(".uc_withdrawDetail  :input")其中的一个


不是

发表于 2012-1-4 21:36 |显示全部楼层
此文章由 nick_sun 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 nick_sun 所有!转贴必须注明作者、出处和本声明,并保持内容完整
alert('Please select a product first!' + this.name);
            $("#TextBox_NameofPersonCompletingForm").focus();

这两行注释掉一行试试,锁定问题出现的地方。

发表于 2012-1-4 21:44 |显示全部楼层
此文章由 lilibet 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 lilibet 所有!转贴必须注明作者、出处和本声明,并保持内容完整
$(".uc_withdrawDetail  >input").focus(function () {
or
$(".uc_withdrawDetail").filter(":input").focus(function () {
Advertisement
Advertisement

发表于 2012-1-5 02:53 |显示全部楼层
此文章由 dcc82 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 dcc82 所有!转贴必须注明作者、出处和本声明,并保持内容完整
我是来歪个楼的
我觉得在web development领域中, 使用alert来提示信息是非常古老和落后的方法, 它可能方便了程序员, 但从usability角度讲, alert绝对是最糟糕最烂的, 因为它干预了用户的访问体验, 用户往往不得不点击确认来继续, 这是非常可怕的. 很容易造成browser的假死.
使用modal dialog来代替alert是目前最好的解决方法

评分

参与人数 1积分 +3 收起 理由
atransformer + 3 感谢分享,回头研究一下

查看全部评分

头像被屏蔽

禁止访问

发表于 2012-1-5 09:53 |显示全部楼层

update

此文章由 atransformer 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 atransformer 所有!转贴必须注明作者、出处和本声明,并保持内容完整
经过试验。
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
$(".uc_withdrawDetail  >input").focus(function () {
or
$(".uc_withdrawDetail").filter(":input").focus(function () {
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
以上,无法找到input

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
不要Alert
$(".uc_withdrawDetail  :input").focus(function () {
        //make sure at least one product has been selected
        if ($("input[type=radio]:checked").length == 0) {
            //alert('Please select a product first!' + this.name);
            $("#TextBox_NameofPersonCompletingForm").focus();
            return;
        }
    });
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
以上,可以看到TextBox_NameofPersonCompletingForm 不停地onfocus,还是死循环。

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    $(".uc_withdrawDetail  :input").focus(function () {
        //make sure at least one product has been selected
        if ($("input[type=radio]:checked").length == 0) {
            alert('Please select a product first!' + this.name);
            //$("#TextBox_NameofPersonCompletingForm").focus();
            return;
        }
    });

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
以上,一切正常。看了即使$("#TextBox_NameofPersonCompletingForm").focus();, jquery 还是要企图完成focus。

发表于 2012-1-5 09:59 |显示全部楼层
此文章由 porcorosso 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 porcorosso 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 atransformer 于 2012-1-5 09:53 发表
经过试验。


确定"#Textbox_" 不在 “.uc_withdrawDetail” 里面? 还是uc_withdrawDetail重复使用而不知情?

死循环确定了我昨天第一个概念。。。forced focus + when focus do something。。。所以你的最后一个coding是work的

[ 本帖最后由 porcorosso 于 2012-1-5 10:00 编辑 ]

评分

参与人数 1积分 +3 收起 理由
atransformer + 3 谢谢奉献

查看全部评分

发表于 2012-1-5 12:57 |显示全部楼层
此文章由 rainmore 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 rainmore 所有!转贴必须注明作者、出处和本声明,并保持内容完整
不知道是不是scope 的问题,$('ID', scope)。你可以试试看
头像被屏蔽

禁止访问

发表于 2012-1-5 13:53 |显示全部楼层
此文章由 atransformer 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 atransformer 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 rainmore 于 2012-1-5 12:57 发表
不知道是不是scope 的问题,$('ID', scope)。你可以试试看



啥意思?
Advertisement
Advertisement

发表于 2012-1-5 14:51 |显示全部楼层
此文章由 rainmore 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 rainmore 所有!转贴必须注明作者、出处和本声明,并保持内容完整
最好把你的dom的关系也发上来。
假设 $(".uc_withdrawDetail  :input") 是所有<input type="radio" class="uc_withdrawDetail" /> 这里有performance 问题。
“Because :input is a jQuery extension and not part of the CSS specification, queries using :input cannot take advantage of the performance boost provided by the native DOM querySelectorAll() method. To achieve the best performance when using :input to select elements, first select the elements using a pure CSS selector, then use .filter(":input").”
http://api.jquery.com/input-selector/
其次,用focus也有问题,当你用tab键时,input可以focus但不会被checked
还有,if ($("input[type=radio]:checked").length == 0) {会把页面上所有的input:raido都选中,按照上面的假设的话 应该是$('input.uc_withdrawDetail :checked')
最后,不是scope,而是context http://api.jquery.com/jQuery/

评分

参与人数 1积分 +4 收起 理由
atransformer + 4 高手啊@

查看全部评分

发表于 2012-1-5 15:16 |显示全部楼层
此文章由 典 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 典 所有!转贴必须注明作者、出处和本声明,并保持内容完整
估计LZ所说的 input不是 radio的,

validation的思路是很有意思的,还有一种思路是把validation放在"#TextBox_NameofPersonCompletingForm, 除非"#TextBox_NameofPersonCompletingForm 有合适的值,否则让用户没有机会focus 到uc_withdrawDetail  :input, 一了百了
头像被屏蔽

禁止访问

发表于 2012-1-5 21:18 |显示全部楼层
此文章由 atransformer 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 atransformer 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 于 2012-1-5 15:16 发表
估计LZ所说的 input不是 radio的,

validation的思路是很有意思的,还有一种思路是把validation放在"#TextBox_NameofPersonCompletingForm, 除非"#TextBox_NameofPersonCompletingForm 有合适的值,否则让用户没有机会focus 到uc_withdrawDetail  :input, 一了百了


跟#TextBox_NameofPersonCompletingForm没啥关系。 有一个 radiobutton list , 必须选一个。

发表回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Advertisement
Advertisement
返回顶部