jquery - 如何循环blur方法

查看:79
本文介绍了jquery - 如何循环blur方法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

需实现效果,当单价blur时,如果当前行的项目名称不为空,而单价为空时,弹出当前行单价不能为空。需要做到循环,但是获取不到当前行的项目名称,在单价的blur方法中弹出的i并不是当前行,而是最后一行。请问怎么解决?

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<style>
table{}
table td{border:1px solid #000; height:35px; line-height:35px;}
</style>
<script src="http://cdn.static.runoob.com/libs/jquery/1.10.2/jquery.min.js"></script>
<script>
$(function(){

    
for(var i= 0;i<4;i++)
 {
    if(i==0)
    {
        $("#txtAssetName_0").blur(function(){
            if($(this).val()=="")
            {
                alert("项目名称不能为空!");       
                return false;       
            }
            
        })                              
    }
        $("#txtPrize_"+i).blur(function(){
            if($("#txtPrize_"+i).val()=="")
            {
                if($("#txtAssetName_"+i).val()!="")
                {
                    
                    alert("第"+(i+1)+"行的单价不能为空!");       
                    return false;       
                }
            }                   
            else 
            {
                if(!checkPrize($("#txtPrize_"+i).val()))
                {
                    alert('请在第'+(i+1)+'行输入正确的单价格式,如123或123.00!');
                    $("#txtPrize_"+i).val("");
                    return false;
                }
            }
        });

 }
})
</script>
</head>

<body>
<table style="border-collapse:collapse; border:1px solid #000;" >
                    <tbody>
                    <tr>
                        <td class="td3">
                            <span class="spans">*</span>项目名称
                        </td>
                        <td class="td4">
                            <span class="spans">*</span>单价
                        </td>
                        <td class="td5">
                            <span class="spans">*</span>数量
                        </td>
                        <td class="td6">
                            <span class="spans">*</span>金额
                        </td>
                    </tr>
                    <tr>
                        <td>
                            <input name="txtAssetName_0" type="text" id="txtAssetName_0" class="textbox" multiline="true">
                        </td>
                        <td>
                            <input name="txtPrize_0" type="text" id="txtPrize_0" class="textbox" multiline="true">
                        </td>
                        <td>
                            <input name="txtNum_0" type="text" id="txtNum_0" class="textbox" multiline="true">
                        </td>
                        <td>
                            <input name="txtSingleTotal_0" type="text" id="txtSingleTotal_0" class="textbox" multiline="true">
                        </td>
                    </tr>
                    <tr>
                        <td>
                            <input name="txtAssetName_1" type="text" id="txtAssetName_1" class="textbox" multiline="true">
                        </td>
                        <td>
                            <input name="txtPrize_1" type="text" id="txtPrize_1" class="textbox" multiline="true">
                        </td>
                        <td>
                            <input name="txtNum_1" type="text" id="txtNum_1" class="textbox" multiline="true">
                        </td>
                        <td>
                            <input name="txtSingleTotal_1" type="text" id="txtSingleTotal_1" class="textbox" multiline="true">
                        </td>
                    </tr>
                    <tr>
                        <td>
                            <input name="txtAssetName_2" type="text" id="txtAssetName_2" class="textbox" multiline="true">
                        </td>
                        <td>
                            <input name="txtPrize_2" type="text" id="txtPrize_2" class="textbox" multiline="true">
                        </td>
                        <td>
                            <input name="txtNum_2" type="text" id="txtNum_2" class="textbox" multiline="true">
                        </td>
                        <td>
                            <input name="txtSingleTotal_2" type="text" id="txtSingleTotal_2" class="textbox" multiline="true">
                        </td>
                    </tr>
                    <tr>
                        <td>
                            <input name="txtAssetName_3" type="text" id="txtAssetName_3" class="textbox" multiline="true">
                        </td>
                        <td>
                            <input name="txtPrize_3" type="text" id="txtPrize_3" class="textbox" multiline="true">
                        </td>
                        <td>
                            <input name="txtNum_3" type="text" id="txtNum_3" class="textbox" multiline="true">
                        </td>
                        <td>
                            <input name="txtSingleTotal_3" type="text" id="txtSingleTotal_3" class="textbox" multiline="true">
                        </td>
                    </tr>
                    <tr>
                        <td>
                            <input name="txtAssetName_4" type="text" id="txtAssetName_4" class="textbox" multiline="true">
                        </td>
                        <td>
                            <input name="txtPrize_4" type="text" id="txtPrize_4" class="textbox" multiline="true">
                        </td>
                        <td>
                            <input name="txtNum_4" type="text" id="txtNum_4" class="textbox" multiline="true">
                        </td>
                        <td>
                            <input name="txtSingleTotal_4" type="text" id="txtSingleTotal_4" class="textbox" multiline="true">
                        </td>
                    </tr>
                    
                   
                </tbody></table>
</body>
</html>

解决方案

改为:

for(var i= 0;i<4;i++)
{
    //for循环内部
    (function(i){
       //你的代码
    })(i)
}

闭包问题, 当你循环完绑定blur事件之后, i=4(循环到最后一次 i++等于4时跳出循环), 所以在触发事件的回调的时候, 函数内部所有的i 都是4;

这篇关于jquery - 如何循环blur方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆