автозаполнение JavaScript с событием onChange - PullRequest
0 голосов
/ 13 июля 2010

У меня есть два поля ввода, 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 ]

2 голосов
/ 13 июля 2010

Во-первых, вы можете объединить их в одно событие, готовое к DOM.Кроме того, часть вашего кода была за пределами события, поэтому, возможно, именно поэтому он не работал.

$(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.

0 голосов
/ 13 июля 2010

Может быть, вы должны сделать это:

<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 не регистрируется.

С уважением, Satyajit

0 голосов
/ 13 июля 2010

Я полагаю, что вы пропустили апостроф в строке, которая гласит:

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

это должно читаться как

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