0

我试图用backbone.js & php 创建用户交互页面。但是当我提交 html 表单时,我无法调用该函数。任何人都可以帮助我吗?

这是代码

        <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js"></script>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.7/jquery-ui.js"></script>
    <script type="text/javascript" src="http://documentcloud.github.com/underscore/underscore.js"></script>
    <script type="text/javascript" src="http://documentcloud.github.com/backbone/backbone.js"></script>

    <!--- Here are the backbone code --->

    <script type="text/javascript">
     var FamilyModel = Backbone.Model.extend({ 
       defaults: { 
         name: "Corleone" 
       },
       url: "back.php"
     }); 

     var FamilyList = Backbone.Collection.extend({
       model: FamilyModel 
     });


    var FamilyListView = Backbone.View.extend({  
        el: $('#SampleForm'),
        model: FamilyModel,
        events: {
          'click #Submit': 'createOne'
        },
        createOne: function(e){
        e.preventDefault();

           alert('Yes');
        }

     });

  // Fire up the application:
  window.App = new FamilyListView;
    </script>

<!-- //HTML -->
<form name="SampleForm" id="SampleForm">
<table>
<tr><td>Name:</td><td><input type="text" name="varName"></td></tr>
<tr><td>Age:</td><td><input type="text" name="intAge"></td></tr>
<tr><td>Mobile:</td><td><input type="text" name="intMobile"></td></tr>
<tr><td colspan="2" align="center"><input type="submit" name="Submit" id="Submit" value="ADD"></td></tr>
</table>
</form>

期待您尽快做出宝贵的回应。谢谢

4

2 回答 2

3

您需要延迟$('#SampleForm')选择器的调用,直到 DOM 准备好。

主干对象是用对象字面量定义的,这意味着右侧的值会立即被计算。因为它是立即评估的,所以 DOM 还没有准备好,jQuery 找不到你的表单。

我在这里写了问题的详细解释和一些可能的解决方案:http: //lostechies.com/derickbailey/2011/11/09/backbone-js-object-literals-views-events-jquery-and-el/

于 2011-11-09T15:08:34.277 回答
1

您不能在那里调用 jquery,因为没有创建 DOM。当 DOM 准备好并且您的代码应该可以工作时,初始化您的 FamilyListView。

$(document).ready(function(){
    var foo = new FamilyListView({el: $('form')});
}); 
于 2011-11-09T14:10:17.213 回答