使用onChange事件进行javascript自动完成

时间:2010-07-12 21:22:50

标签: javascript jquery autocomplete datepicker onchange

我有两个输入字段,Id和Desc。我需要一个javascript,它根据已经设置的一些字段输入第二个文本字段中的值。就像圣诞节那样,如果输入12/25,那就应该说圣诞节了。

它为一个值工作。但是,如果我把“else if”它不适用于多个值。

<script type="text/javascript">
$(document).ready(function() { 
    $('#holidayDate').datepicker(); 
    var availableTags = ["New years Day", "Martin Luther King Day", "Groundhog Day", "Valentine's Day", "Washington's Birthday", "Easter", "Earth Day", "National Arbor Day", "Mother's Day", "Memorial Day", "Flag Day", "Father's Day", "Independence Day", "Labor Day", "Columbus Day", "Halloween", "Veterans Day", "Thanksgiving Day", "Pearl Harbor Remembrance Day", "Christmas Day"]; 
    $("#tags").autocomplete({source:availableTags}); 
    $('#holidayDate').change(function() { 
        if ($(this).val().substring(0, 5) === '12/25') { 
            $('#tags').val('Christmas Day'); 
        }else if ($(this).val().substring(0, 5) === '01/01') { 
            $('#tags').val('New years Day'); 
        } else { 
            $('#tags').val(''); 
        }                
    }); 
}); 
</script>

3 个答案:

答案 0 :(得分:2)

首先,您可以将这些组合成一个DOM ready事件。此外,您的一些代码是在事件之外,所以这可能是它无法正常工作的原因。

$(function() {
    $('#date').datepicker();
    var availableTags = ["Christmas Day","etc"];
    $("#tags").autocomplete({source:availableTags});
    $('#date').change(function() {
        if ($(this).val().substring(0, 5) === '12/25') {
            $('#desc').val('Christmas');
        } else {
            $('#tags').val('');
        }
    });
});

更新:希望它只是一个写得不好的示例,但您的给定HTML也非常无效。请注意,您正在打开<div>标记,然后关闭<p>标记,以及其他问题,例如在打开正文之前不关闭<head>标记等。所有这些问题都可能阻止javascript正常运行。

答案 1 :(得分:0)

我相信你在

这一行中错过了一个撇号
$('#desc).val('Christmas');

应该阅读

$('#desc').val('Christmas');

答案 2 :(得分:0)

也许你应该这样做:

<DIV class="ui-widget">Date: <INPUT TYPE="TEXT" name="xx" property="xx" id="date" /></P>
<input type="text" id="desc" name="desc"/>
<script>
$('#date').change( function() { 
    if ($(this).val().substring(0, 5) === '12/25') { 
        $('#desc').val('Christmas'); 
    } 
});   
</script>
</body>

我认为您的onchange事件未被注册。

此致 萨蒂亚吉特