4

次のようなテキストボックスと選択ボックスがあります。

<h3>Recipe Yield</h3>
<input style='width:100px' type="text" name="yield" class="small" />
<select name='yieldType'>
    <option value='Servings'>Serving(s)</option>
    <option value='Cups'>Cup(s)</option>
    <option value='Loaves (Loaf)'>Loaves (Loaf)</option>
</select>

これがJSFiddleです:http://jsfiddle.net/T3Sxb/

ご覧のとおり、選択オプションは次の形式になっています。word(s)

でもスクリプトが欲しいのはいつ

  • 入力ボックスの数値が1の場合、オプションの値は次の形式になります。word
  • 入力ボックスの数値が1より大きい場合、オプションの値は複数形です。

これは可能ですか?これどうやってするの?すべての助けをありがとう!

4

3 に答える 3

6

各アイテムに適切な単数形/複数形を宣言できるように、データ属性を使用しています。多くの場合、単に「s」を追加しても機能しません。

また、ゼロ項目は通常(常に?)複数形をとることにも注意してください。

HTML

<input style='width:100px' type="text" id="yield" class="small" />
<select id='yieldType'>
    <option value='Servings' data-single="Serving" data-other="Servings"></option>
    <option value='Cups' data-single="Cup" data-other="Cups"></option>
    <option value='Loaves (Loaf)' data-single="Loaf" data-other="Loaves"></option>
</select>

JavaScript

var yield = $("#yield");
var yieldType = $("#yieldType");

function evaluate(){
    var single = parseInt(yield.val(), 10) === 1;
    $("option", yieldType ).each(function(){
        var option = $(this);
        if(single){
            option.text(option.attr("data-single"));
        }else{
            option.text(option.attr("data-other"));
        }
    });
}

// whatever events you want to trigger the change should go here
yield.on("keyup", evaluate);

// evaluate onload
evaluate();
于 2013-03-26T22:47:15.843 に答える
3

あなたはこれを試すことができます:http: //jsfiddle.net/T3Sxb/7/

var plural = {
    Serving: "Servings",
    Cup: "Cups",
    Loaf: "Loaves"
};

var singular = {
    Servings: "Serving",
    Cups: "Cup",
    Loaves: "Loaf"
};

$( "#pluralizer" ).on( "keyup keydown change", function() {
    var obj = parseInt( $( this ).val() ) === 1 ? singular : plural;
    $( "#YieldType option" ).each( function() {
        var html = $( this ).html();
        if ( html in obj ) {
            $( this ).html( obj[html] );
        }
    });
});
于 2013-03-26T22:48:07.183 に答える
2

UXの観点からは、(s)完全に許容できると思います。しかしとにかく、これはどうですか?

<option value='Servings' data-singular="Serving" data-plural="Servings">Servings</option>

それから:

// you should really use IDs ;)
$('input[name="yield"]').on('change', function () {
    var singular = parseInt($(this).val(), 10) === 1;
    $('select[name="yieldType"]').each(function () {
        if (singular) {
            $(this).val($(this.attr('data-singular')));
        } else {
            $(this).val($(this.attr('data-plural')));
        }
    });
});
于 2013-03-26T22:50:05.873 に答える