3

(xupload) blueimp プラグイン用のこのテンプレートがあります。

<script id="template-upload" type="text/x-tmpl">
{% for (var i=0, file; file=o.files[i]; i++) { %}
<tr class="template-upload fade">
    <td class="preview"><span class="fade"></span></td>
    <td class="title"><label>Title: <input type="text" name="title" required></label></td>
    <td class="name"><span>{%=file.name%}</span></td>
    <td class="size"><span>{%=o.formatFileSize(file.size)%}</span></td>
    {% if (file.error) { %}
        <td class="error" colspan="2"><span class="label label-important">Error</span> {%=file.error%}</td>
    {% } else if (o.files.valid && !i) { %}
        <td>
            <div class="progress progress-success progress-striped active" role="progressbar" aria-valuemin="0" aria-valuemax="100" aria-valuenow="0"><div class="bar" style="width:0%;"></div></div>
        </td>
        <td class="start">{% if (!o.options.autoUpload) { %}
            <button class="btn btn-primary">
                <i class="icon-upload icon-white"></i>
                <span>Start</span>
            </button>
        {% } %}</td>
    {% } else { %}
        <td colspan="2"></td>
    {% } %}
    <td class="cancel">{% if (!i) { %}
        <button class="btn btn-warning">
            <i class="icon-ban-circle icon-white"></i>
            <span>Cancel</span>
        </button>
    {% } %}</td>
</tr>
{% } %}
</script>

この JavaScript コードを実行しようとしていますが、機能しませんが、firbug の作業のためにコンソール内で実行すると、ページの読み込みが完了したときに実行する方法は何ですか

<script type="text/javascript">
jQuery(document).ready(function(){
    $("input[type=text]").focus(function(){
        alert('some text');
    });
});
</script>

私の場合、yii 拡張機能 (select2) を使用しています。この拡張機能は、JavaScript 選択を生成します。

<script id="template-upload" type="text/x-jQuery-tmpl">
{% for (var i=0, file; file=o.files[i]; i++) { %}
<tr class="template-upload fade">
    <td class="preview">
        <span class="fade"></span>
    </td>
    {% if (file.error) { %}
        <td class="error" colspan="2"><span class="label label-important">Error</span> {%=file.error%}</td>
    {% } else if (o.files.valid && !i) { %}
        <td>
            <label><?php echo CHtml::label('Keywords', 'keywords'); ?></label>
            <?php
                echo CHtml::textField('tags',$selected,array('id'=>'tags'));
                $this->widget('ext.select2.ESelect2',array(
                  'selector'=>'#tags',
                  'options'=>array(
                    'tags'=>$tags,
                    'width'=>'400px;',
                  ),
                ));
            ?>
        </td>
        <td>
            <div class="progress progress-success progress-striped active"><div class="bar" style="width:0%;"></div></div>
        </td>
        <td class="start">{% if (!o.options.autoUpload) { %}
            <button class="btn btn-primary">
                <i class="icon-upload icon-white"></i>
                <span>Start</span>
            </button>
        {% } %}</td>
    {% } else { %}
        <td colspan="2"></td>
    {% } %}
    <td class="cancel">{% if (!i) { %}
        <button class="btn btn-warning">
            <i class="icon-ban-circle icon-white"></i>
            <span>Cancel</span>
        </button>
    {% } %}</td>
</tr>
{% } %}
</script>
4

1 に答える 1

0

申し訳ありませんが、高グレードの非同期問題があります。

MVC カプセル化された 2 つの MVC があります (問題ありません)。

  1. プライマリは、DB (モデル)、HTML (ビュー)、PHP (コントローラー) - サーバー側です。
  2. セカンダリは、JSON/AJAX(モデル)、テンプレート(ビュー)、JavaScript(コントローラー) - クライアント側です。

最初の MVC は問題ありませんが、2 番目は悪い習慣です。

  1. プライマリ MVC からセカンダリ ビューの静的なモデルを呼び出します。プライマリ MVC からセカンダリ コントローラ (Javascript) を介してセカンダリ ビューに導くのではなく、モデルを呼び出します。
  2. alert("何らかのテキスト"); 表示されるすべての入力フィールドに (このページの最初の訪問時に) 1 回バインドされます (テンプレートの入力は添付されません)。このコードは、後でレンダリングされる入力テキストに対して「アラート」をトリガーしないことを理解してください。

通常、Primary-PHP と Secondary-Template を分離することで成功するため、Primary-Controller、Primary-View、Secondary-Model、Secondary-Controller を介して、Secondary-View に情報を導く必要があります。

これが大変な作業であることはわかっていますが、クリーンアップする唯一の方法です。

于 2013-03-25T06:58:37.033 に答える