Javascript提交无效

时间:2016-10-25 21:30:49

标签: javascript html angularjs

这似乎是一个非常简单的问题,但无论出于何种原因,我的PlotType.XY方法都没有在JS中调用。

HTML:

public void AutoZoom()
{
    double max;
    double min;

    // some code to determine the max/min values for the y-axis
    // ...

    PlotModel.Axes[1].Reset(); //Reset the axis to clear ViewMinimum and ViewMaximum

    ((LinearAxis)PlotModel.Axes[1]).Maximum = max;
    ((LinearAxis)PlotModel.Axes[1]).Minimum = min;

    PlotModel.InvalidatePlot(true);
}

控制器:

submit()

我无法更改<ion-view title="Register" hide-nav-bar="true" nav-transition="none" id="page9"> <ion-content padding="true" class="manual-ios-statusbar-padding" scroll="false"> <form id="register-form4" ng-submit="register()" class="list"> <ion-list id="register-list4"> <label class="item item-input" id="register-input7"> <input type="text" ng-model="registration.email" placeholder="Email" required> </label> <label class="item item-input" id="register-input9"> <input type="password" ng-model="registration.password" placeholder="Password" required> </label> </ion-list> </form> <a id="register-button7" ng-click="document.getElementById('register-form4').submit();" class="button button-positive button-block">Create Account</a> <a ui-sref="login" id="register-button8" class="button button-positive button-block button-clear">Back</a> <div ng-show="isError">{{ loginError }}</div> </ion-content> </ion-view> 标记,即使表单提交.controller('registerCtrl', ['$scope', '$stateParams', "$firebaseAuth", "$location", function ($scope, $stateParams, $firebaseAuth, $location) { $scope.register = function() { var email = $scope.registration.email, password = $scope.registration.password, confirmPassword = $scope.registration.confirmPassword; console.log("Being submitted"); } }]) 会更容易,但是Ionic Creator会自动生成HTML,我无法搞清楚。< / p>

编辑:我想以这种方式提交表单而不是仅仅点击按钮触发<a>的原因是我要触发HTML input在表单中,以便检查已输入的字段,因此我不必手动执行

编辑2:我已将register()标记更改为提交按钮。但是,这仍然没有调用表明未提交表单的required方法:

<a>

查看这些docs,它应该可以正常工作,因为它几乎是相同的格式

我已经阅读过1个标准HTML register()<input type="submit" value="Create Account" id="register-button7" class="button button-positive button-block"> 无法协同工作的用户。有谁知道这是真的吗?

2 个答案:

答案 0 :(得分:0)

您可以在表单中使用提交类型的html inputbutton。这是JSFiddle的一个工作演示:https://jsfiddle.net/ydbhb5dL/

控制器:

angular
    .module('App', [])
    .controller('ExampleController', function ($scope) {
        $scope.registration = {};

        $scope.register = function () {
            var email = $scope.registration.email,
                password = $scope.registration.password;

            console.log('Email:', email);
            console.log('Password:', password);
            console.log('Being submitted!');
        };
    });

HTML:

<div ng-app="App" ng-controller="ExampleController">
<ion-view title="Register" hide-nav-bar="true" nav-transition="none" id="page9">
    <ion-content padding="true" class="manual-ios-statusbar-padding" scroll="false">
    <form id="register-form4" ng-submit="register()" class="list">
        <ion-list id="register-list4">
        <label class="item item-input" id="register-input7">
            <input type="text" ng-model="registration.email" placeholder="Email" required>
        </label>
        <label class="item item-input" id="register-input9">
            <input type="password" ng-model="registration.password" placeholder="Password" required>
        </label>
        </ion-list>

        <input type="submit" class="button-like-link" value="Create Account (button)">
    </form>
    </ion-content>
</ion-view>
</div>

答案 1 :(得分:-1)

要解决您的问题,请将提交表单的<a>元素更改为

<a id="register-button7" ng-click="register()" class="button button-positive  button-block">Create Account</a>

之前ngClick无效的原因是因为它$scope查看了document,但未定义。 可以将以下行添加到控制器中,但这不是必需的。

$scope.document = document;

如果您坚持不更改表单结构,则可以为提交“按钮”创建一个类似于下面的指令(未经测试)。

angular.module('moduleName').directive('submitForm', function() {
    return {
         restrict:   'A',
         scope:      {
             formId:   '='
         },
         link:       function($scope, $elem) {
             $elem.on('click', function() {
                 document.getElementById($scope.formId).submit();
             });
         }
    };
});

然后您将使用以下内容:

<a id="register-button7" submit-form form-id="register-form4" class="button button-positive button-block">Create Account</a>

如果您仍然不想更改<a>标记以使用新指令,那么您唯一的另一个选择就是定义$scope.document = document

或者,正如@J Orbe所提到的,您可以使用onclick而不是依赖Angular指令(即ngClicksubmitForm)。我不确定这是否有资格作为“Angular way”TM,你可能希望避免混合使用Angular和常规JavaScript属性,因为它可能会导致混淆。通常,如果您使用的是Angular,则应尝试使用Angular解决问题。