Javascript jQuery—编写此语句的另一种方法(DRY)
我想知道是否有一种方法可以在不使用if/else的情况下编写以下代码 目前,这一切都很好。但我正试图找出如何利用干式方法,我不喜欢道具写了两次 我有一个文本值,用户需要在文本框中输入该代码。一旦值匹配,它将“启用”提交按钮,否则将禁用它Javascript jQuery—编写此语句的另一种方法(DRY),javascript,jquery,dry,prop,Javascript,Jquery,Dry,Prop,我想知道是否有一种方法可以在不使用if/else的情况下编写以下代码 目前,这一切都很好。但我正试图找出如何利用干式方法,我不喜欢道具写了两次 我有一个文本值,用户需要在文本框中输入该代码。一旦值匹配,它将“启用”提交按钮,否则将禁用它 $( '#input-code' ).on( 'change keyup paste', function() { if ( $( this ).val() == $( "#random-code" ).text() ) { $( '#submit-
$( '#input-code' ).on( 'change keyup paste', function() {
if ( $( this ).val() == $( "#random-code" ).text() ) {
$( '#submit-btn' ).prop( 'disabled', false );
} else {
$( '#submit-btn' ).prop( 'disabled', true );
}
});
您可以直接在
prop
中使用否定表达式
当按钮文本和内的文本
相同时,这将禁用按钮
确保修剪文本()
,以删除前导空格和尾随空格,否则它将与按钮文本不匹配
$('#input-code').on('change keyup paste', function() {
$('#submit-btn').prop('disabled', !($(this).val() == $.trim($("#random-code").text())));
});
或
您可以将if..else
迁移到内部条件中以设置属性
$( '#input-code' ).on( 'change keyup paste', function() {
$( '#submit-btn' ).prop( 'disabled', this.value !== $( "#random-code" ).text() );
});
此外,如果您使用的是现代浏览器,您可以在('input'
上使用,而不是“change keyup paste”
。不过请检查浏览器支持
$('#input-code').on('change keyup paste', function() {
$('#submit-btn').prop('disabled', function(){
return ( $( this ).val() == $( "#random-code" ).text() );
});
});
有关更多详细信息,请查看此处。。。
将val设置为!=
条件,并将其用作属性值。在我看来,建议的内联ternaries更难解释。如果你走在线路线,我个人会发现使用!=
比回溯更容易阅读,以找出整个表达式是反向的。
$('#input-code').on('change keyup paste', function() {
$('#submit-btn').prop('disabled', function(){
return ( $( this ).val() == $( "#random-code" ).text() );
});
});