Кіріс мәтінінде мәтін пішімін қалай түзетуге болады?

Мен jQuery пайдаланамын және пайдаланушыға 'mm-dd-yyyy' күнін санын енгізу үшін енгізуді жасауды қалаймын.

мысал: 12 санының (айдың нөмірі) автоматты түрде - көрсетуін қалаймын. Бұл мүмкін бе?

1
Мен веб-негізделген енгізу үшін лайықты маска шешімі таппадым. Мен кездесетін әрбір адамның кішкене күлкісі бар; және онда көп нәрсе бар. Егер сіз маскирлеуді қолданатын болсаңыз, қолданыстағы шешімді қолдану жақсы: мысалы: digitalbush.com/projects/masked-input-plugin
қосылды автор rkw, көзі

3 жауаптар

$('input').keyup(function(e){
    var val = $(this).val();
    val = val.replace(/[^0-9]/g,'');
    if(val.length >= 2)
        val = val.substring(0,2) + '-' + val.substring(2); 
    if(val.length >= 5)
        val = val.substring(0,5) + '-' + val.substring(5); 
    if(val.length > 10)
        val = val.substring(0,10);
    $(this).val(val);
});

Мұнда тірі демо бар:

http://jsfiddle.net/AUAJ3/

UPDATE:

Кейбір оңтайландыру:

  • «Арнайы» пернелердің біреуін басқан кезде keydown / keyup оқиғаларын тоқтатпауыңыз керек (осы жағдайда delete , backspace және көрсеткі пернелер) ағымдағы мәнді өзгертуге мүмкіндік береді
  • Басылған кілт жарамды сан (0-9) болса және оқиға идентификаторын
  • тоқтатса, keydown
  • Түзету алгоритмін change оқиғасына байланыстырыңыз
$('input')  
    .change(function(e){
        $(this).val(formatDate($(this).val()));
    })
    .keyup(function(e){
         if(isSpecialKey(e.keyCode))
            return true;
          $(this).val(formatDate($(this).val()));
    })
    .keydown(function(e){
        if(isSpecialKey(e.keyCode))
            return true;
        var k = e.charCode || e.which;
        var keyVal = String.fromCharCode(k);
        if(!/[0-9]/.test(keyVal) || $(this).val().length > 9)
            {
                e.preventDefault();
                return false;
            }
    });

function formatDate(val){
    val = val.replace(/[^0-9]/g,'');
    if(val.length >= 2)
        val = val.substring(0,2) + '-' + val.substring(2); 
    if(val.length >= 5)
        val = val.substring(0,5) + '-' + val.substring(5); 
    if(val.length > 10)
        val = val.substring(0,10);
    return val;
}

function isSpecialKey(k){
    for(var i in KEY)
        if(KEY[i] == k)
            return true;
    return false;
}

var KEY = {
    'delete' : 46,
    'backspace' : 8,
    'left' : 37,
    'right' : 39,
    'up' : 38,
    'down' : 40
}

Мұнда тірі демо бар:

http://jsfiddle.net/AUAJ3/2/

Екінші жаңартылған күн:

Сіз пайдаланушыға енгізу өрісі қажет болатын күн пішімінде хабарлауыңыз керек Осы жаңа мүмкіндік үшін жаңартылған демо қараңыз.

5
қосылды
@ gion_13, фокус мәтіннің соңында орнатылатын мәселе ... егер барлық мәтінді өшіріп, қайта жазу керек болса, нөмірді өзгерту керек.
қосылды автор Dail, көзі
@Dali: Жаңартылған жауапты қараңыз
қосылды автор gion_13, көзі
Керемет ұшыру. Сондай-ақ бірнеше рет басуды бірден ескереді. дауыс берді!
қосылды автор Marco Johannesen, көзі

Мынаны қолданыңыз: http://jsfiddle.net/g8KSg/ :)

$('#checkval').keyup( function() {

    var value = $(this).val();

   //check for first 2 chars
    if(value.length === 2) {
        value += "-";
        $(this).val(value);
    }

   //check for first 4 + "-"
    if(value.length === 5) {
        value += "-";
        $(this).val(value);
    }

});
0
қосылды

тексеріңіз

$(document).ready( function() {
        $("#mytextbox").attr('maxlength', 10);       
        $('#mytextbox').keyup(function(e){
            var value = $(this).val();
            if(value.length == 2)
            {
                $(this).val(function(index, val) {
                        return val + '-';
                    });
            }
            if(value.length == 5)
            {
                $(this).val(function(index, val) {
                        return val + '-';
                    });
            }

        });
}) ;

Және html

<input type="text" id="mytextbox">

And live demo here

Өңдеу: Ең көп ұзындықты орнату үшін оны пайдаланыңыз

$("#mytextbox").attr('maxlength', 10);

Демо

0
қосылды
ол жұмыс істемейді: 12-12-222222222222 - шексіз мәтін. Маған ұзындық қажет.
қосылды автор Dail, көзі
менің өңделген жауапымды тексер
қосылды автор Rupesh Pawar, көзі