2

(jquery初心者アラート!)

JQuery/javascript を使用してテキスト フィールドから値を取得し、それが 14 日以上経過しているかどうかを確認しようとしています。私の問題は、アプリ/ページが「編集」モードか「表示」モードかによって、ページ (およびフィールドの HTML) が異なることです。

入力フィールド内にあるか、スパン内の単なるテキストであるかに関係なく、スパン内にラップされた val を取得するセレクターを作成することは可能ですか? たとえば、span().val() を介して値を取得できますか? 努力していますが、今のところ成功していません。

HTML スニペットは次のとおりです。

編集モード:

<td class="m1234Bottom" style="width:35%;">
    <span id="ABC123" class="Datetime">
    <div class="dateElement" id="ABC188c">
        <input name="ABC$123ccc"
           type="text">
        <a class="date"></a>
        <a style="display: none;" class="time"></a>
    </div>
    </span>
</td>

ビューモード:

<td class="m1234Bottom" style="width:35%;">
    <span id="ABC123">
        12/23/2012
    </span>
</td>

次の方法で「編集」値を取得できます。

$("input[name*='123ccc']".each(function() {
    var outv= $(this).val();
    alert(outv);
});

編集コードと表示コードの両方でその値を見つける、より優れた JQuery はありますか?

その selection/each/this.val チェーンがあなたをうんざりさせたらごめんなさい。初めてjqueryを探索するのに数時間しかかかりません。自由に嘲笑したり、より良い方法を指摘したりしてください。説明は必要ありません。RTFWebDoc を実行できます。しかし、誰かが介入しなければ、私は javascript を介してこれを行うことに行き詰まっています。次は厄介な if/then コードブロックであり、さらに数時間の試行錯誤とスタックオーバーフローの読み取りにより、null の jquery エラーチェックを学習します。最終的に私の目標に到達する前に、javascript の文字列から日付への関数を再発見します:「この日付は 14 日以上前ですか?」

ありがとう、

4

4 に答える 4

2

私の理解が正しければ、スパン ID #ABC123 のテキスト値または ABC$123ccc という名前の入力の値を取得する必要があります。

その場合、提供したスニペットに基づいて、次の方法を試すことができます。

var span = $('#ABC123');

//check if span has input child
if (span.find('input').length > 0) {
    //get value from input field
    var date = span.find('input').val();
}
else {
    //get text date from the span
    var date = span.text();
}
于 2012-09-27T23:55:09.307 に答える
1
$(function() {
    $('#ABC123').find('input').length > 0 ? value = $('#ABC123').find('input').val() : value = $('#ABC123').text();
    console.log(value);
});​

jsFiddle: http://jsfiddle.net/63QF6/41/

フィドルで、スパンの ID の 1 つを #ABC123 以外の何かに変更して、ビューの変更を模倣します。

于 2012-09-28T00:00:59.217 に答える
0

残念ながら、span に val() 関数を使用することはできません。JQuery Web サイトの定義によると、次のようになります。

.val() メソッドは主に、input、select、textarea などのフォーム要素の値を取得するために使用されます。

スパンの値を取得する場合は、.text() または .html() を使用する必要があります。これは、スパンの内容は「値」ではなく、スパンの内容であるためです (スパン coulb には他のノードが含まれます。入力)。

ただし、次のような独自の関数を作成できます。

function retrieveValue()
{
    // Retrieve the element (not guess yet)
    var spanOrInput = $("#ABCD123");

    // Try to guess if its an input or a span
    var type = spanOrInput.attr('type');
    if (typeof type == "undefined" || !type)
        return spanOrInput.val();
    else
        return spanOrInput.html();
}
于 2012-09-27T23:53:53.747 に答える
-1

これを行うことができない理由はありますか:

<input type="hidden" id="hidtype" />

次に、天気に基づいて、表示モードまたは編集モードで、この非表示フィールドに保存します。

 $(function(){
     if ($('#hidtype').val() == '1') {   //or what ever you use to set state
     // code here for that mode
     }
     else{
    // code for other type of mode
     }     
 });

そのようにすることを主張する場合は、入力がこのように存在するかどうかを確認できます

if( $('#ABC123 input').length ) {
//this means the input exists - handle from here
}
于 2012-09-27T23:53:17.877 に答える