2012-04-12 4 views
2

私は<input name="begin_time" />,<input name="end_time" />のような入力を持っています。私はjquery.datepickerとjquery-ui-timepicker-addon.jsを使ってdatetimeを取得しています。jquery.datepickerの後にエラーヒントを取り除く方法

$('input[name=begin_time]').datetimepicker({ 
     minDate : 0, 
     stepMinute : 5, 
     beforeShow : function (input, inst) {}, 
     onClose : function (dateText, inst) { 
      var endDateTextBox = $('input[name=end_time]'); 
      var beginDateTextBox = $('input[name=begin_time]'); 
      var testStartDate = new Date(dateText); 
      if (endDateTextBox.val() != '') { 
       var testEndDate = new Date(endDateTextBox.val()); 
       if (testStartDate > testEndDate) 
        endDateTextBox.val(dateText); 
      } else { 
       endDateTextBox.val(dateText); 
      } 
     }, 
     onSelect : function (selectedDateTime) { 
      var start = $(this).datetimepicker('getDate'); 
      $('input[name=end_time]').datetimepicker('option', 'minDate', new Date(start.getTime())); 
     } 
    }); 
    $('input[name=end_time]').datetimepicker({ 
     onClose : function (dateText, inst) { 
      var startDateTextBox = $('input[name=begin_time]'); 
      if (startDateTextBox.val() != '') { 
       var testStartDate = new Date(startDateTextBox.val()); 
       var testEndDate = new Date(dateText); 
       if (testStartDate > testEndDate) 
        startDateTextBox.val(dateText); 
      } else { 
       startDateTextBox.val(dateText); 
      } 
     }, 
     stepMinute : 5, 
     onSelect : function (selectedDateTime) { 
      var end = $(this).datetimepicker('getDate'); 
      $('input[name=begin_time]').datetimepicker('option', 'maxDate', new Date(end.getTime())); 
     } 
    }); 

私はまた、入力を検証し、私はフォームを送信する前に、それが必要とされていることを確認しjquery.validate.jsを使用しています。

$('#form').validate({ 
    rules : { 
     begin_time : 'required', 
       end_time : 'required' 
    }, 
    messages : { 
     begin_time : 'The start time can\' be empty', 
       end_time : 'The event end time can\' be empty' 
    } 
}) 

ユーザーが何も入力しなかった場合、私が提出すると、メッセージが表示されます(正しい)。

私はdatetimeをピックアップしても、エラーのヒントはまだ消えません。私はそれが消えたい。

誰でも私にこれについての提案を与えることができますか?

答えて

1

focusCleanupを使用して、エラークラスとメッセージを取り除くことができます。

$(".selector").validate({ 
    focusCleanup: true 
}) 
+0

ありがとうございました。 – user1328584

1

これは私の仕事:

$("#dateFieldID").change(function() { 
    $('#formID').validate({ 
     required: true, 
     date: true 
    }).element('#dateFieldID'); 
}); 

は、各日付ピッカーの入力欄に変更イベントを追加し、その後の検証は私のためにフィールドを削除しました。私はこれをFirefox 17、IE 7+、Safari 6、Chrome v.23でテストしました。私は、開発者がJQuery UIのDatePicker onCloseイベントにフックし、onCloseイベントが送出されたときにフォーカスを日付フィールドに戻すことを提案する他の投稿を見てきました。これはの作業でしたが、IEではDatePickerダイアログは非表示になりませんでした。また、日付フィールドのフォーカスが失われた後、エラーメッセージが消えてしまいました。これは他のフィールドと一致しませんでした。これは私のためのトリックでした。

私はこれが誰かを助けてくれることを願っています。これはうまくいくようです - 少なくとも私にとっては;)

関連する問題