Javascript 根据jquery handlebar.js的值禁用复选框

Javascript 根据jquery handlebar.js的值禁用复选框,javascript,php,handlebars.js,Javascript,Php,Handlebars.js,我有一个HTML表格,其中包含一个带有多个选择(把手)的复选框。我已经设置了{{status}}的值,即Yes和No 当值等于否(函数)时,如何禁用{{status}}复选框? {{#invoices}} <tr> <td><input name="select_option" id="{{status}} "value="{{open_amount}}" type="checkbox"/></td> <

我有一个HTML
表格
,其中包含一个带有多个选择(
把手
)的
复选框。我已经设置了
{{status}}
的值,即
Yes
No

当值等于
否(函数)
时,如何禁用
{{status}}
复选框

{{#invoices}}
    <tr>
        <td><input name="select_option" id="{{status}} "value="{{open_amount}}" type="checkbox"/></td>
        <td style="white-space:nowrap;">{{company_code}}</td>
        <td style="white-space:nowrap;">{{invoice_no}}</td>
        <td style="white-space:nowrap;">{{invoice_type}}</td>
        <td style="white-space:nowrap;">{{invoice_date}}</td>
        <td style="white-space:nowrap;">{{due_date}}</td>
        <td style="white-space:nowrap;"><font color="{{color}}">{{status}}</font></td>
        <td style="white-space:nowrap;">{{open_amount}}</td>
    </tr>{{/invoices}}

这就行了?

您可以使用“disabled”属性的绑定

<td><input name="select_option" {{status==='No'?'disabled':''}} value="{{open_amount}}" type="checkbox"/></td>

通常,为了测试值,我会使用自定义帮助器:

Handlebars.registerHelper('test', function(lvalue, operator, rvalue, options) {
    var doDisplay = false;
    var items = (""+rvalue).split("|");
    var arrayLength = items.length;
    for (var i = 0; (i < arrayLength); i++) {
        if (operator == "eq") {
            if (lvalue == items[i]) {
                doDisplay = true;
            }
        } else if (operator == "ne") {
            if (lvalue != items[i]) {
                doDisplay = true;
            }
        } else if (operator == "gt") {
            if (parseFloat(lvalue) > parseFloat(items[i])) {
                doDisplay = true;
            }
        } else if (operator == "lt") {
            if (parseFloat(lvalue) < parseFloat(items[i])) {
                doDisplay = true;
            }
        }else if (operator == "le") {
            if (parseFloat(lvalue) <= parseFloat(items[i])) {
                doDisplay = true;
            }
        }else if (operator == "ge") {
            if (parseFloat(lvalue) >= parseFloat(items[i])) {
                doDisplay = true;
            }
        }
    }
    if (doDisplay) {
        return options.fn(this);
    } else {
        return "";
    }
});
handlebar.registerHelper('test',函数(左值、运算符、右值、选项){
var doDisplay=false;
变量项=(“”+rvalue).split(“|”);
var arrayLength=项目长度;
对于(变量i=0;(iparseFloat(items[i])){
doDisplay=true;
}
}else if(运算符==“lt”){
if(parseFloat(左值)
您可以这样使用它:

<td><input name="select_option" value="{{open_amount}}" type="checkbox" {{#test status 'eq' 'No(Function)'}}
   disabled
{{/test}}/></td>


你能为车把添加自定义助手吗?@Christophery编辑了我现在正在做的事情。你的第二个版本不起作用,因为状态不是一个ID,它是一个包含你要测试的值的字符串。因此,使用这种方法有什么解决方案吗?如果不更好地理解你想要实现什么,很难回答。可能有一个解决方案,但不包括您现在想要使用的元素。JS中也有一个错误,因为您在任何情况下都将disabled设置为true。不客气。很遗憾,handlebar没有附带这样的帮助器。我可以使用JS函数来呈现帮助器吗?您所说的“呈现”是什么意思?如果你想显示一个JS函数,助手将显示你想要的任何东西,它也可以工作。