1

私はこのマークアップを持っています

<select id="helpamount" name="helpamount"><?= get_texto_clave('amount')?>
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    <option value="4">4</option>
    <option value="5">5</option>
    <option value="-1" class="convertoinput">more</option>
</select>

そして、このコードを入力に変換しようとします

$('body').on('click','.convertoinput',function(){
    $(this).parent().after('<input type="number" id="'+$(this).parent().attr('id')+'" name="'+$(this).parent().attr('id')+'" value="" placeholder="Especifica un valor numerico" /> ');
    $(this).parent().remove();
});

これがFirefoxでのみ機能する理由は何ですか?

4

2 に答える 2

2

Cross browser ->

$('body').on('change','#helpamount',function(){
    if($(this).val() == -1){
        $(this).after('<input type="number" id="'+$(this).prop('id')+'" name="'+$(this).prop('id')+'" value="" placeholder="Especifica un valor numerico" /> ');
        $(this).remove();
    }
    $('body').off('change', '#helpamount');
});​

jsFiddle example.

于 2012-09-26T19:23:09.883 に答える
1

作業コード:

$('body').on('change','#helpamount',function(){
    var
        e = $(this),
        eid = e.attr('id');

    if (e.val() == e.find('option.convertoinput').val()) {
        e.after('<input type="number" id="'+eid+'" name="'+eid+'" value="" placeholder="Especifica un valor numerico" />').remove();
        $('body').off('change', '#helpamount');
    }
});​

jsFiddle: http://jsfiddle.net/zSbUA/1/

于 2012-09-26T19:25:39.510 に答える