You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AngularJS中如何将输入框的输入值传入submit函数?

解决:将输入框实际输入值传入AngularJS的ng-keypress函数

你的问题出在当前的ng-keypress="submit(key)"调用里——这里的key是输入框的初始静态值(也就是"key"),根本不是用户实际按下的按键数值,所以函数里拿到的自然不是你想要的内容。下面给你最简单的实现方式:

方法:通过$event获取按键对应的数值

AngularJS的ng-keypress支持直接传递事件对象$event,我们可以通过这个对象提取用户按下的按键字符,再转成数字使用。

第一步:修改HTML代码

把原来的key参数换成$event:

<input type="text" value="key" ng-keypress="submit($event)" ng-model="pager.page"/>

第二步:更新控制器的submit函数

在函数里从事件对象中提取按键值,同时增加非数字输入的过滤:

$scope.submit = function (event) {
    // 将按键的ASCII码转成对应的字符,再转为整数
    const inputNum = parseInt(String.fromCharCode(event.which), 10);
    
    // 过滤非数字按键,避免无效输入触发逻辑
    if (isNaN(inputNum)) return;

    // 这里用提取到的输入数字替换原来的val参数
    const newPage = parseInt($scope.pager.page, 10) + inputNum;

    if (!$scope.pager.initialized || newPage > $scope.pager.totalPages) {
        return;
    }

    $scope.pager.page = newPage;
    $scope.loading = true;
    $http({
        url: 'custom/generate',
        method: 'POST',
        data: $.param({
            filters: $scope.filters,
            page: $scope.pager.page
        }),
        headers: {
            'Content-Type': 'application/x-www-form-urlencoded'
        }
    }).success(function (data) {
        $scope.data.data = data.meetings;
        $scope.pager.page = data.pager.page;
        $scope.pager.totalPages = data.pager.totalPages;
        // 简化判断逻辑
        $scope.printable = $scope.data.data.length > 0;
    }).error(function() {
        $scope.loading = false;
        $rootScope.$broadcast('ErrorOnResponse', {error: 'An unknown error occurred'});
    });
};

额外说明

如果你的需求是直接获取输入框的当前完整值(而不是单次按键的数字),那更简单——因为ng-model="pager.page"已经做了双向绑定,你可以直接在函数里使用$scope.pager.page,此时HTML可以改成ng-keypress="submit()",函数里去掉事件参数直接用绑定的值即可。不过从你的原有逻辑来看,你是想把按下的数字加到当前页码上,所以上面的方法更贴合你的需求。

内容的提问来源于stack exchange,提问作者john doe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 10:16:09