单击“添加”按钮后,未显示“提交”按钮(AngularJS)

时间:2015-07-24 09:42:30

标签: javascript jquery angularjs

我有这样的问题(video)。

我只想这样,如果我点击添加按钮,则表单的提交按钮将直接显示。如果我手动输入内容或粘贴在textarea中,它就可以工作。

我的代码是这样的:

<?php
    include('c2gcon.php');
    $nameajax=isset($_REQUEST['nameajax'])?$_REQUEST['nameajax']:null;
    if($nameajax<>null){
        $username=$nameajax;
        $_SESSION['simpanun8']=$_SESSION['simpanun8']."','".$username;
        $_SESSION['simpanun8'][0]='';
        $_SESSION['simpanun8'][1]='';
        echo "$_SESSION[simpanun8]'"; //tanda petiknya tidak boleh dihilangkan, itu penting
        exit;
    }
    include('logincheckadmin.php');
?>
<html>
<head>
    <title>DELETE MULTIPLE RECORD</title>
    <link rel="shortcut icon" href="http://c2gdragonteam.com/img/dragonhead.ico">
    <link href="/css/bootstrap.css" rel="stylesheet">
    <style>
        p,td {
            font-size: 70%;
        }
    </style>
    <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular.min.js"></script>
    <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.2.16/angular-resource.min.js"></script>
</head>
<body ng-app="ctrljs">
<?php
    $_SESSION['simpanun8']=null;
    $ssloginadmin=$_SESSION['ssloginadmin'];
    $page=isset($_REQUEST['page'])?$_REQUEST['page']:null;
    if($page=='form'){
?>
        <form method='post' name='formupgrade' id='idForm' action='?page=submit' ng-controller='formctrl'>
            <table>
                <tr><td>Username : </td></tr>
                <tr>
                    <td>
                        <select name='username' id='username' ng-model='username' required>
                            <option value='' selected></option>
<?php
                                $q=mysql_query("SELECT username FROM t_un WHERE upgrade='1' and t1count='0' and t2count='0' ORDER BY username");
                                while($f=mysql_fetch_object($q)){
?>
                                    <option value='<?php echo "$f->username";?>'><?php echo "$f->username";?></option>
<?php
                                }
?>
                        </select>
                        <input type='button' value='add' onclick='checkusername();'></input>
                        <input name='forawhile' id='forawhile'></input>
                    </td>
                </tr>
                <tr>
                    <td>
                        <textarea rows='4' cols='50' name='gulungresult' id='gulungresult' placeholder='paste in here' ng-model='gulungresult' required ng-pattern="/^[A-Za-z0-9'/\.\-\s\,]*$/"></textarea>
                    </td>
                </tr>
            </table>
            <input type='submit' value='submit' ng-hide="!formupgrade.$valid"></input>
        </form>
        <br>
        <div id='finallyresult'></div>
<?php
    }
    if($page=='submit'){
        $gulungresult=isset($_REQUEST['gulungresult'])?$_REQUEST['gulungresult']:null;
        //echo "gulungresult=$gulungresult<br>";
        mysql_query("DELETE FROM t_un WHERE username IN(".$gulungresult.")") or die(mysql_error()); 
        echo "<script type='text/javascript'>window.opener.document.location.reload(true);window.close();</script>";
    }
?>
<script>
    function checkusername(){
        var status = document.getElementById("gulungresult");
        var u = document.getElementById("username").value;
        if(u != ""){
            status.innerHTML = "<font color='red'><img src='/img/loading.GIF'></img> checking...</font>";
            var hr = new XMLHttpRequest();
            hr.open("POST", "admintreedelrec.php", true);
            hr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
            hr.onreadystatechange = function() {
                if(hr.readyState == 4 && hr.status == 200){
                    status.value=hr.responseText;
                }
            }
            var v = "nameajax="+u;
            hr.send(v);
        }
    }
</script>
<script>
    var app = angular.module('ctrljs', []);
    app.controller('formctrl', function($scope, $http){
      $scope.digits = {};
    });
</script>
</body>
</html>

感谢您帮助我。

1 个答案:

答案 0 :(得分:2)

如果您希望它正常工作,您必须使用AngularJS进行所有表单操作,或者只是离开AngularJS。

无论如何,要在AngularJS中执行此操作,您必须使用ngClick指令而不是使用onclick,例如:

<form ng-submit="vm.confirmUsers()" name="myForm">
    <select ng-model="vm.username">
        <option>User 1</option>
        <option>User 2</option>
        <option>User 3</option>
        <option>User 4</option>
        <option>User 5</option>
    </select>
    <button ng-click="vm.addUser(vm.username)" type="button" ng-disabled="vm.username == null">Add</button>
    <textarea ng-model="vm.users" required></textarea>
    <button type="submit" ng-hide="myForm.$invalid">Submit</button>
</form>

除了拥有onclick=checkUsername();内容之外,您还必须使用控制器将其添加到模型中,例如:

vm.addUser = function(username) {
    if (vm.users == null || vm.users.length === 0) {
        vm.users = "'" + username + "'";
    } else {
        vm.users += ", '" + username + "'";  
    }
};

这样,手动输入数据和添加选择列表以添加详细信息的方法相同。

但是,不仅onclick必须使用,您还必须使用AngularJS提交表单,以便使用ngSubmit正确执行此操作。

要发送HTTP请求,您可以使用$http服务,例如:

vm.confirmUsers = function() {
    $http.post('?page=submit', {
        usernames: vm.users
    }).success(function() {
        // What to do if it was successful?
    });
};

这会将POST请求发布到您在表单中提供的相同URL,并将用户名(您必须将它们作为参数传递)作为参数添加到其中。

无论如何,这里最大的问题是你在这里混合了几件事,违背了AngularJS应用程序中常用的所有原则。但要详细说明这里的所有问题,答案太长了。